library(tidyverse)
library(MouseGastrulationData)
library(SingleCellExperiment)
library(scater)
library(scran)
library(bit64)
library(patchwork)

options(digits=3)
source('~/milo/notebooks/benchmark/benchmark_utils.R')
dir.exists(figdir)
[1] FALSE

Load dataset

Select samples from late time points (even number of replicates)

```r
AtlasSampleMetadata %>%
  filter(stage %in% c(\E7.75\, \E8.0\, \E8.25\, \E8.5\)) %>%
  pull(sample)

<!-- rnb-source-end -->

<!-- rnb-output-begin eyJkYXRhIjoiIFsxXSAgOCAgOSAxMiAxMyAxNiAxNyAyNCAyNSAyOCAyOSAzMyAzNCAzNSAzNiAzN1xuIn0= -->

[1] 8 9 12 13 16 17 24 25 28 29 33 34 35 36 37




<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->



<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYGBgclxuZW1icnlvX3NjZSA8LSBFbWJyeW9BdGxhc0RhdGEodHlwZT1cXHByb2Nlc3NlZFxcLCBzYW1wbGVzID0gbGF0ZV9zYW1wbGVzKVxuXG5gYGBcbmBgYCJ9 -->

```r
```r
embryo_sce <- EmbryoAtlasData(type=\processed\, samples = late_samples)

<!-- rnb-source-end -->

<!-- rnb-output-begin eyJkYXRhIjoic25hcHNob3REYXRlKCk6IDIwMjAtMTAtMjdcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbnNlZSA/TW91c2VHYXN0cnVsYXRpb25EYXRhIGFuZCBicm93c2VWaWduZXR0ZXMoJ01vdXNlR2FzdHJ1bGF0aW9uRGF0YScpIGZvciBkb2N1bWVudGF0aW9uXG5sb2FkaW5nIGZyb20gY2FjaGVcbiJ9 -->

snapshotDate(): 2020-10-27 see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache see ?MouseGastrulationData and browseVignettes(‘MouseGastrulationData’) for documentation loading from cache




<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-plot-begin -->

<img src="data:image/png;base64,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" />

<!-- rnb-plot-end -->

<!-- rnb-chunk-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuZW1icnlvX3NjZVxuXG5gYGAifQ== -->

```r
embryo_sce
class: SingleCellExperiment 
dim: 23434 64018 
metadata(0):
assays(2): counts logcounts
rownames(23434): ENSMUSG00000051951 ENSMUSG00000102343 ... ENSMUSG00000063897
  ENSMUSG00000095742
rowData names(2): ENSEMBL SYMBOL
colnames(64018): cell_7625 cell_7626 ... cell_139330 cell_139331
colData names(22): cell barcode ... synth_samples true_labels
reducedDimNames(6): pca.corrected umap ... pca_batch umap_batch
altExpNames(0):

Preprocessing

logcounts(embryo_sce) <- log1p(counts(embryo_sce))
## Exclude zero counts genes
keep.rows <- rowSums(logcounts(embryo_sce)) != 0
embryo_sce <- embryo_sce[keep.rows, ]

dec <- modelGeneVar(embryo_sce)
hvgs <- getTopHVGs(dec, n=5000)

## Drop cells with NAs in corrected pca (low quality)
embryo_sce <- embryo_sce[,apply(reducedDim(embryo_sce, "pca.corrected"), 1, function(x) all(!is.na(x)))]

## Run UMAP (the data has been subsetted)
# embryo_sce <- scater::runPCA(embryo_sce, subset_row=hvgs)
embryo_sce <- scater::runUMAP(embryo_sce, dimred="pca.corrected")
plotReducedDim(embryo_sce, "UMAP", colour_by="celltype", text_by="celltype", point_size=0.1) +
  scale_color_manual(values=EmbryoCelltypeColours) +
  guides(color=guide_legend(override.aes = list(size=2)))
Scale for 'colour' is already present. Adding another scale for 'colour', which will replace the existing scale.

Save object 4 benchmark

```r
saveRDS(embryo_sce, \/nfs/team205/ed6/data/milo_benchmark/embryo_data_bm.RDS\)

<!-- rnb-source-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->


Save list of celltype names and sample by sizes


<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-frame-begin eyJtZXRhZGF0YSI6eyJjbGFzc2VzIjpbImdyb3VwZWRfZGYiLCJ0YmxfZGYiLCJ0YmwiLCJkYXRhLmZyYW1lIl0sIm5jb2wiOjMsIm5yb3ciOjM3fSwicmRmIjoiVWtSWU13cFlDZ0FBQUFNQUJBQURBQU1GQUFBQUFBVlZWRVl0T0FBQUJBSUFBQUFCQUFRQUNRQUFBQUY0QUFBREV3QUFBQU1BQUFNTkFBQUFKUUFBQUFFQUFBQUNBQUFBQXdBQUFBUUFBQUFGQUFBQUJnQUFBQWNBQUFBSUFBQUFDUUFBQUFvQUFBQUxBQUFBREFBQUFBMEFBQUFPQUFBQUR3QUFBQkFBQUFBUkFBQUFFZ0FBQUJNQUFBQVVBQUFBRlFBQUFCWUFBQUFYQUFBQUdBQUFBQmtBQUFBYUFBQUFHd0FBQUJ3QUFBQWRBQUFBSGdBQUFCOEFBQUFnQUFBQUlRQUFBQ0lBQUFBakFBQUFKQUFBQUNVQUFBUUNBQUFBQVFBRUFBa0FBQUFHYkdWMlpXeHpBQUFBRUFBQUFDVUFCQUFKQUFBQUNVRnNiR0Z1ZEc5cGN3QUVBQWtBQUFBWlFXNTBaWEpwYjNJZ1VISnBiV2wwYVhabElGTjBjbVZoYXdBRUFBa0FBQUFUUW14dmIyUWdjSEp2WjJWdWFYUnZjbk1nTVFBRUFBa0FBQUFUUW14dmIyUWdjSEp2WjJWdWFYUnZjbk1nTWdBRUFBa0FBQUFPUTJGeVpHbHZiWGx2WTNsMFpYTUFCQUFKQUFBQUQwTmhkV1JoYkNCbGNHbGliR0Z6ZEFBRUFBa0FBQUFQUTJGMVpHRnNJRTFsYzI5a1pYSnRBQVFBQ1FBQUFCTkRZWFZrWVd3Z2JtVjFjbVZqZEc5a1pYSnRBQVFBQ1FBQUFBMUVaV1l1SUdWdVpHOWtaWEp0QUFRQUNRQUFBQXRGYm1SdmRHaGxiR2wxYlFBRUFBa0FBQUFJUlhCcFlteGhjM1FBQkFBSkFBQUFDa1Z5ZVhSb2NtOXBaREVBQkFBSkFBQUFDa1Z5ZVhSb2NtOXBaRElBQkFBSkFBQUFDa1Z5ZVhSb2NtOXBaRE1BQkFBSkFBQUFERVY0UlNCbFkzUnZaR1Z5YlFBRUFBa0FBQUFNUlhoRklHVnVaRzlrWlhKdEFBUUFDUUFBQUF4RmVFVWdiV1Z6YjJSbGNtMEFCQUFKQUFBQUhFWnZjbVZpY21GcGJpOU5hV1JpY21GcGJpOUlhVzVrWW5KaGFXNEFCQUFKQUFBQUEwZDFkQUFFQUFrQUFBQWVTR0ZsYldGMGIyVnVaRzkwYUdWc2FXRnNJSEJ5YjJkbGJtbDBiM0p6QUFRQUNRQUFBQlZKYm5SbGNtMWxaR2xoZEdVZ2JXVnpiMlJsY20wQUJBQUpBQUFBQ2sxbGMyVnVZMmg1YldVQUJBQUpBQUFBRGsxcGVHVmtJRzFsYzI5a1pYSnRBQVFBQ1FBQUFCQk9ZWE5qWlc1MElHMWxjMjlrWlhKdEFBUUFDUUFBQUF4T1pYVnlZV3dnWTNKbGMzUUFCQUFKQUFBQUEwNU5VQUFFQUFrQUFBQUpUbTkwYjJOb2IzSmtBQVFBQ1FBQUFCRlFZWEpoZUdsaGJDQnRaWE52WkdWeWJRQUVBQWtBQUFBUlVHRnlhV1YwWVd3Z1pXNWtiMlJsY20wQUJBQUpBQUFBQTFCSFF3QUVBQWtBQUFBVFVHaGhjbmx1WjJWaGJDQnRaWE52WkdWeWJRQUVBQWtBQUFBUVVISnBiV2wwYVhabElGTjBjbVZoYXdBRUFBa0FBQUFVVW05emRISmhiQ0J1WlhWeVpXTjBiMlJsY20wQUJBQUpBQUFBRUZOdmJXbDBhV01nYldWemIyUmxjbTBBQkFBSkFBQUFDMU53YVc1aGJDQmpiM0prQUFRQUNRQUFBQkJUZFhKbVlXTmxJR1ZqZEc5a1pYSnRBQVFBQ1FBQUFCRldhWE5qWlhKaGJDQmxibVJ2WkdWeWJRQUFCQUlBQUFBQkFBUUFDUUFBQUFWamJHRnpjd0FBQUJBQUFBQUJBQVFBQ1FBQUFBWm1ZV04wYjNJQUFBRCtBQUFBRFFBQUFDVUFBQWNJQUFBQUFnQUFBVllBQUFoMkFBQUV0Z0FBQnlFQUFBUHlBQUFEUlFBQUFSOEFBQVE3QUFBQVlnQUFDMjhBQUFSUkFBQUtpQUFBRGZRQUFCRGFBQUFJM1FBQUV2WUFBQWFZQUFBSEVRQUFETEVBQUE4b0FBQUF3QUFBQUdVQUFBSnVBQUFIK1FBQUFVd0FBQTVUQUFBQUtnQUFBTVFBQUF0UkFBQUFRQUFBRGdVQUFBZmZBQUFIQkFBQURJSUFBQUR6QUFBRERRQUFBQ1VBQUFBRkFBQUFBUUFBQUFRQUFBQUZBQUFBQlFBQUFBVUFBQUFFQUFBQUJBQUFBQVFBQUFBRkFBQUFBd0FBQUFVQUFBQUZBQUFBQlFBQUFBVUFBQUFGQUFBQUJRQUFBQVVBQUFBRkFBQUFCUUFBQUFVQUFBQUZBQUFBQXdBQUFBTUFBQUFFQUFBQUJRQUFBQVFBQUFBRkFBQUFBZ0FBQUFNQUFBQUZBQUFBQXdBQUFBVUFBQUFGQUFBQUJRQUFBQVVBQUFBRUFBQUVBZ0FBQXY4QUFBQVFBQUFBQlFBRUFBa0FBQUFOS0RBdU1qazRMREF1T1RjNFhRQUVBQWtBQUFBTUtEQXVPVGM0TERFdU5qWmRBQVFBQ1FBQUFBc29NUzQyTml3eUxqTXpYUUFFQUFrQUFBQUxLREl1TXpNc015NHdNVjBBQkFBSkFBQUFDeWd6TGpBeExETXVOamxkQUFBRUFnQUFBLzhBQUFBUUFBQUFBUUFFQUFrQUFBQUdabUZqZEc5eUFBQUEvZ0FBQkFJQUFBUC9BQUFBRUFBQUFBRUFCQUFKQUFBQUNtUmhkR0V1Wm5KaGJXVUFBQVFDQUFBQUFRQUVBQWtBQUFBSmNtOTNMbTVoYldWekFBQUFEUUFBQUFLQUFBQUEvLy8vMndBQUJBSUFBQUFCQUFRQUNRQUFBQVZ1WVcxbGN3QUFBQkFBQUFBREFBUUFDUUFBQUFOd2IzQUFCQUFKQUFBQUNIQnZjRjl6YVhwbEFBUUFDUUFBQUFoemFYcGxYMkpwYmdBQUFQNEFBQVFDQUFBQUFRQUVBQWtBQUFBSGIzQjBhVzl1Y3dBQUFoTUFBQUFGQUFBQUVBQUFBQUVBQkFBSkFBQUFBWElBQUFBUUFBQUFBUUFFQUFrQUFBQVJkVzV1WVcxbFpDMWphSFZ1YXkwMU1qa0FBQUFLQUFBQUFRQUFBQUFBQUFBTkFBQUFBUUFBQUNVQUFBQU5BQUFBQVFBQUFBTUFBQVFDQUFBRi93QUFBQkFBQUFBRkFBUUFDUUFBQUFabGJtZHBibVVBQkFBSkFBQUFCV3hoWW1Wc0FBUUFDUUFBQUE1eWIzZHVZVzFsY3k1d2NtbHVkQUFFQUFrQUFBQUtjbTkzY3k1MGIzUmhiQUFFQUFrQUFBQUtZMjlzY3k1MGIzUmhiQUFBQVA0QUFBRCsifQ== -->

<div data-pagedtable="false">
  <script data-pagedtable-source type="application/json">
{"columns":[{"label":["pop"],"name":[1],"type":["fctr"],"align":["left"]},{"label":["pop_size"],"name":[2],"type":["int"],"align":["right"]},{"label":["size_bin"],"name":[3],"type":["fctr"],"align":["left"]}],"data":[{"1":"Allantois","2":"1800","3":"(3.01,3.69]"},{"1":"Anterior Primitive Streak","2":"2","3":"(0.298,0.978]"},{"1":"Blood progenitors 1","2":"342","3":"(2.33,3.01]"},{"1":"Blood progenitors 2","2":"2166","3":"(3.01,3.69]"},{"1":"Cardiomyocytes","2":"1206","3":"(3.01,3.69]"},{"1":"Caudal epiblast","2":"1825","3":"(3.01,3.69]"},{"1":"Caudal Mesoderm","2":"1010","3":"(2.33,3.01]"},{"1":"Caudal neurectoderm","2":"837","3":"(2.33,3.01]"},{"1":"Def. endoderm","2":"287","3":"(2.33,3.01]"},{"1":"Endothelium","2":"1083","3":"(3.01,3.69]"},{"1":"Epiblast","2":"98","3":"(1.66,2.33]"},{"1":"Erythroid1","2":"2927","3":"(3.01,3.69]"},{"1":"Erythroid2","2":"1105","3":"(3.01,3.69]"},{"1":"Erythroid3","2":"2696","3":"(3.01,3.69]"},{"1":"ExE ectoderm","2":"3572","3":"(3.01,3.69]"},{"1":"ExE endoderm","2":"4314","3":"(3.01,3.69]"},{"1":"ExE mesoderm","2":"2269","3":"(3.01,3.69]"},{"1":"Forebrain/Midbrain/Hindbrain","2":"4854","3":"(3.01,3.69]"},{"1":"Gut","2":"1688","3":"(3.01,3.69]"},{"1":"Haematoendothelial progenitors","2":"1809","3":"(3.01,3.69]"},{"1":"Intermediate mesoderm","2":"3249","3":"(3.01,3.69]"},{"1":"Mesenchyme","2":"3880","3":"(3.01,3.69]"},{"1":"Mixed mesoderm","2":"192","3":"(1.66,2.33]"},{"1":"Nascent mesoderm","2":"101","3":"(1.66,2.33]"},{"1":"Neural crest","2":"622","3":"(2.33,3.01]"},{"1":"NMP","2":"2041","3":"(3.01,3.69]"},{"1":"Notochord","2":"332","3":"(2.33,3.01]"},{"1":"Paraxial mesoderm","2":"3667","3":"(3.01,3.69]"},{"1":"Parietal endoderm","2":"42","3":"(0.978,1.66]"},{"1":"PGC","2":"196","3":"(1.66,2.33]"},{"1":"Pharyngeal mesoderm","2":"2897","3":"(3.01,3.69]"},{"1":"Primitive Streak","2":"64","3":"(1.66,2.33]"},{"1":"Rostral neurectoderm","2":"3589","3":"(3.01,3.69]"},{"1":"Somitic mesoderm","2":"2015","3":"(3.01,3.69]"},{"1":"Spinal cord","2":"1796","3":"(3.01,3.69]"},{"1":"Surface ectoderm","2":"3202","3":"(3.01,3.69]"},{"1":"Visceral endoderm","2":"243","3":"(2.33,3.01]"}],"options":{"columns":{"min":{},"max":[10],"total":[3]},"rows":{"min":[10],"max":[10],"total":[37]},"pages":{}}}
  </script>
</div>

<!-- rnb-frame-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->




## Simulate ONE DA region


<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-plot-begin eyJjb25kaXRpb25zIjpbXSwiaGVpZ2h0Ijo3LCJzaXplX2JlaGF2aW9yIjoxLCJ3aWR0aCI6N30= -->

<img src="data:image/png;base64,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+fJib3n9+vWrVq3q1q1bmzZtBg8evG7dut0KWqLZtinZkKX3YWaETKklV0jlXKm+fVdLe1Qt7aIK2+B3jIiK/dxmzZpddtll06dP/+STTypXrnzRRReVYDDsXrZtSjvk9kokcOYqt7XkCimz7Obbd7W0vT28lrapOA3+nnvuycnJycnJmT9//h//2rhx423f6ZYuXdqkSZNib7xZs2bDhg3LysoyxgwcOHDhwoW7mXw3s/2pEg+5vdIIXK5kaC25QipvSrWQ4GppOxW+loop6kEApWjp0qXbhmAsXbq0UaNGa9asUdVTTjnl7rvvLvZmn3766YEDB1prVfXyyy8fMmTI7ucsqWylGrI0PsxMkRG15Aqp/Cu9t+9qaU+rpV1RMRv8zz//3KpVqxYtWsRisVatWp1yyimq+sgjj4Q3UZx55pmpVKrYG0+lUkOHDm3dunX79u179+69evXq3Q9cUtlKI2SpfpjlX2bVkiukcqu0376rpT2nlnadm8nOcRzHcSqginMN3nEcx3GcbVyDdxzHcZwKyDV4x3Ecx6mAXIN3HMdxnArINXjHcRzHqYBcgy+CZDI5b9687X8zYMCAkSNHhv+uV69evXr1fN/f/gGHH344EQVBsO03Y8eOrVGjxsMPP7z9w+rVqxePx5PJZDKZrFOnTt++fX/88cc/zfDEE0/UrFnz8ssvL5m35ETBFZJTUlwtOTvgGnxJSiaT2y9ysHjx4mXLlm3/AFWdOHHi/fff/8ADD/zuuY899lhBQUFBQcGiRYuMMb179/7j9i+66KKnn376oIMOKo3wTvnhCskpKa6W9mSuwZekHj16TJo0aduPDz/8cPfu3bd/wNy5c+vWrTtgwID8/PwPP/zwTzdSu3btW2655aOPPvr5559/96f+/fvPmDEjXDHJqcBcITklxdXSnsw1+JLUp0+ft956K/yC7Pv+lClTBgwYsP0DJkyYMHz4cADDhg374/flbcKzZ57n/e73hx56aMmHdsofV0hOSXG1tCdzDb4kVatWrXfv3pMnTwbw/PPPt2zZcu+999721+XLly9YsODkk08GMGjQoBkzZqxfv/6PG1m9evWYMWOOOOKIunXrlllyp1xxheSUFFdLezLX4IuAmbcfmQIgnU4bY7b/zbBhwx555BERefjhh88666zt//Tggw9u2LChXr161atXb968+aZN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e2T0SwtmF+++93a/P617p65b51uo+seLL77YtGnTww8/HMC+++47e/bsZs2aPfXUU0VFRSeeeCKA5s2bn3baaU8//XTfvn3jU6ZMmbL63j59+vzUW5x00knOuZ/aC+CCCy5wzjVu3PiEE06YOHHis88+O2jQoClTphx00EFjxow55JBDWreuwd1/4uDXhwFX9h1wZd98S5FQ72neqslNo/+QbykSfg70Prxr78O75luK+s2iRYuaNWu28s/mzZsDmDdv3mabbbZyY4sWLebP/+8K2tr3rs6PD14jbdu2XflSxcXFDRs2PO6440aPHh07+MGDB9dEoWSKPiEhISEhAWjduvWCBQtW/jl16tTS0tK2bdv+eOPChQvbtWu38s817o3H6Koab1y+fPnKA9bZSXzRokUrn8R3AwMHDhw/fvwbb7yxYMGCww47rEYaJQ4+ISEhISEBPXr0qKio+Oc//wngrbfe6tatW0lJyYEHHlhZWfnYY48BWLRo0QMPPNCvX7+Vp6xxb5s2bVKp1FdffQXgm2++ee+996ovw8iRIwGUl5ePHTu2R48eAPbcc8+tt9761FNPPfHEE9PpmhUvShx8QkJCQkICGjduPHHixKFDh7Zs2fL0009/7LHH2rZt26RJk2eeeeZvf/vbTjvttP/++59yyikDBgxYecoa9xYWFt52222nnHJKz549hw4deuSRR0ZRtM53j4/p1q1bt27d4pj8QYMGxbtOP/30b7/9tn///jXVKFmDT0hISEhIAIA999zzk08+WX3jG2+88eMtW2yxRRzZvsa9AM4///zzzz9/lY0rT1kjHTp0iA847bTTVtnVvn37PfbYo0uXLtXS4UckI/iEhISEhIQ6yqJFi66++uqrrrpqPc5NHHwd4vN3p/XpePb5h93sI59vWRLqMWZ21cARh+568SuTPs63LAn1m6VLSo84aPCxh/6ltLQy37L8TPjyyy+7rImhQ4eufvANN9zQqVOnY4455qij1qd/dDJFXyeYN3PheX1uXL6sjIavP/2u97Z/mDzj3mqe+9VH07bcpl3DxkWbVMKE+sJDd78w5r5JiCLAhlz2SOstW+y485bVObGyMvfNF7M6dekgSfvwBCBbmTvr1LtmzixhFJZW5g4/7NYp/762mud+N21e06YNmrdstEklrKfsvPPOH39c3Tvva6+99tprq/ux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" />

<!-- rnb-plot-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->


## Try one method at the time (to pick params)

<!-- ```{r} -->
<!-- embryo_sce <- readRDS("/nfs/team205/ed6/data/milo_benchmark/embryo_data_bm.RDS") -->

<!-- # Build KNN graph for smoothing -->
<!-- X_red_dim = reducedDim(embryo_sce, "pca.corrected")[,1:30] -->
<!-- graph = buildKNNGraph(t(X_red_dim), k = 15)   -->

<!-- ## Simulate labels -->
<!-- seed=2022 -->
<!-- embryo_sce <- add_synthetic_labels(embryo_sce,  -->
<!--                                    n_components = 10,   -->
<!--                                    redDim='pca.corrected',  -->
<!--                                    seed=seed,  -->
<!--                                    knn_graph = graph,  -->
<!--                                    n_replicates = 6) -->
<!-- true_labels <- ifelse(embryo_sce$Condition2_prob < 0.4, "NegLFC", ifelse(embryo_sce$Condition2_prob > 0.6, "PosLFC", "NotDA")) -->
<!-- colData(embryo_sce)[["true_labels"]] <- true_labels -->

<!-- embryo_sce <- runUMAP(embryo_sce, dimred="pca.corrected", name = 'UMAP', n_dimred=1:30) -->
<!-- ``` -->


<!-- Divide cells into true affected subpopulations: take KNN adjacency matrix, filter out edges between cells with different label, then do louvain_clustering at high res -->

<!-- ```{r} -->

<!-- embryo_sce <- cluster_synthetic_labels(embryo_sce, graph) -->
<!-- plotReducedDim(embryo_sce, dimred="UMAP", colour_by="true_labels", point_size=0.2)  -->
<!-- plotReducedDim(embryo_sce, dimred="UMAP", colour_by="true_DA_clust",  -->
<!--                text_by="true_DA_clust",  -->
<!--                point_size=0.2)  -->
<!-- ``` -->

### Cydar


<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuIyMgQ3lkYXJcbmN5ZGFyX3JlcyA8LSBydW5fY3lkYXIoZW1icnlvX3NjZSwgdG9sPTMsIGQ9MzApXG5cbmBgYCJ9 -->

```r
## Cydar
cydar_res <- run_cydar(embryo_sce, tol=3, d=30)

Louvain

Milo

Pick K using within/between cluster distance

dim(as.matrix(nhoods_mat[1:3000,1:100]) %*% X_pca_ixs[1:100,])
[1] 3000   30

Compare with MELD

meld_out <- run_meld_reticulate(embryo_sce, condition_col="synth_labels", sample_col="synth_samples", reduced.dim="pca.corrected",
         k=50)

embryo_sce$meld_res <- meld2output(meld_out, out_type = "labels")

plotReducedDim(embryo_sce, dimred="UMAP", colour_by="meld_res", point_size=0.2) 

plotReducedDim(embryo_sce, dimred="UMAP", colour_by="true_labels", point_size=0.2) 

## Make design matrix
sample_col = "synth_samples"
condition_col = "synth_labels"
batch_col = NULL
design_df <- as.tibble(colData(embryo_sce)[c(sample_col, condition_col, batch_col)]) %>%
    distinct() %>%
    column_to_rownames(sample_col)
  if (is.null(batch_col)) {
    design <- formula(paste('~', condition_col, collapse = ' '))  
  } else {
    design <- formula(paste('~', batch_col, "+", condition_col, collapse = ' '))
  }

milo_ls <- lapply(milo_ls, function(m){
  ## Test DA
  m <- countCells(m, meta.data = data.frame(colData(m)), sample='synth_samples')
  m <- calcNhoodDistance(m, d=30, reduced.dim = "pca.corrected")
  DA_results <- testNhoods(m, design = design, design.df = design_df)
  return(list(Milo=m, da_res=DA_results))
})

milo_outcome <- lapply(seq_along(milo_ls), function(i) 
  data.frame(pred=milo2output(milo_ls[[i]]$Milo, milo_ls[[i]]$da_res, out_type="labels"), 
             true=milo_ls$`20`$Milo$true_labels,
             method=names(milo_ls)[i])
  ) %>%
  purrr::reduce(bind_rows) %>%
  calculate_outcome()

milo_outcome %>%
  ggplot(aes(method, Power)) + geom_point()

milo_outcome %>%
  ggplot(aes(method, TPR)) + geom_point()
milo_out2 <- run_milo(embryo_sce, condition_col="synth_labels", sample_col="synth_samples", reduced.dim="pca.corrected",
         k=30, prop=0.1)

milo_out2$Milo <- buildNhoodGraph(milo_out2$Milo)

hist(rowSums(milo_out2$Milo@nhoods), breaks=100)

milo_out2$DAres %>%
  ggplot(aes(logFC, - log10(SpatialFDR))) + geom_point()
plotNhoodSizeHist(milo_out2$Milo) / 
  plotNhoodGraphDA(milo_out2$Milo, milo_out2$DAres)

MELD

meld_res_ls <- lapply(seq(20,50, by = 10), function(k){
  meld_res <- run_meld_reticulate(embryo_sce, condition_col="synth_labels", sample_col="synth_samples", reduced.dim = "pca.corrected", d=30, k=k)
  meld_out <- meld2output(meld_res, out_type = "labels")
  meld_out
})

lapply(meld_res_ls)

# meld_outcome <- 
  lapply(seq_along(meld_res_ls), function(i) 
  data.frame(pred=meld_res_ls[[i]], 
             true=embryo_sce$true_labels,
             method=seq(20,50, by = 10)[i])
  ) %>%
    purrr::reduce(bind_rows) %>%
    mutate(pred=as.character(pred)) %>%
    mutate(pred=case_when(pred=="PosLFC" ~ "NegLFC",
                        pred=="NegLFC" ~ "PosLFC",
                        TRUE ~ pred)) %>%
    mutate(outcome=case_when(true==pred & pred!="NotDA" ~ 'TP',
                             true!=pred & pred!="NotDA" ~ 'FP',
                             true!=pred & pred=="NotDA" ~ 'FN',
                             true==pred & pred=="NotDA"  ~ "TN"
    )) %>%
    group_by(method, outcome) %>%
    summarise(n=n()) %>%
    pivot_wider(id_cols=method, names_from=outcome, values_from=n, values_fill=0) %>%
    mutate(TPR=TP/(TP+FP), FPR=FP/(TP+FP), TNR=TN/(TN+FN), FNR = FN/(FN+TP),
           Power = 1 - FNR,
           Accuracy = (TP + TN)/(TP + TN + FP + FN),
           Recall = TP / (TP+FN)
    )

+ Batch effect

(the following code is wrapped in the run_batch_benchmark.R script but I am rerunning for viz)

Visualize batch effects of different intensity

lapply(bm_sce_ls, function(x) plotReducedDim(x, dimred="umap_batch", colour_by="true_labels", point_size=0.2) + 
         ggtitle(paste0("Batch effect SD = ", x$norm_sd[1])))
[[1]]

[[2]]

[[3]]

[[4]]

Load results from run_batch_benchmark.R

setNames(method_colors, method_names)
         milo         daseq          meld       louvain    milo_batch louvain_batch 
    "#1B9E77"     "#D95F02"     "#7570B3"     "#E7298A"     "#66A61E"     "#E6AB02" 
## Read DA predictions
prob_thresh_vec <- seq(0.5, 0.9, 0.05)

outcome_df <- lapply(seq_along(res_files_full), function(i){ 
  print(paste("Outcome no. ", i))
  benchmark_df <- read_csv(res_files_full[i])
  pop_enr <- as.numeric(out_meta_df[i,"enr"])
  lapply(prob_thresh_vec[prob_thresh_vec < pop_enr], function(x){
    benchmark_df %>%
      .outcome_by_prob(da_upper = x) %>%
      mutate(DA_thresh=x) %>%
      ungroup() %>%
      dplyr::select(- method) %>%
      bind_cols(out_meta_df[i,]) %>%
      filter(DA_thresh < as.numeric(enr))
    }) %>%
    purrr::reduce(bind_rows)
  }) %>%
  purrr::reduce(bind_rows)

write_csv(outcome_df, "/nfs/team205/ed6/data/milo_benchmark/outcome_full.csv")
outcome_df <- read_csv("/nfs/team205/ed6/data/milo_benchmark/outcome_full.csv")

Motivate threshold

Breakdown by population: explain variability in MELD, population size

pop_sizes <- table(embryo_sce$celltype)

outcome_df %>%
  filter(method!="milo_batch") %>%
  mutate(FDR = FP/(TP+FP)) %>%
  mutate(TPR=ifelse(is.nan(TPR), 0, TPR),
         FPR=ifelse(is.nan(FPR), 0, FPR),
         FDR=ifelse(is.nan(FDR), 0, FDR),
         Precision=ifelse(is.nan(Precision), 0, Precision)) %>%
  mutate(pop=str_replace(pop, "_", " ")) %>%
  mutate(pop_size=pop_sizes[pop])  %>%
  arrange(pop_size) %>%
  mutate(pop=factor(pop, levels=unique(pop))) %>%
  filter(DA_thresh >= 0.6 & batchEffect==0) %>%
  ggplot(aes(pop_size, TPR, color=method)) + 
  geom_point(size=2, alpha=0.7) +
  facet_grid(enr~., labeller="label_both") +
  geom_smooth(method="lm") +
  theme_bw(base_size = 16) +
  scale_color_manual(values = method_colors, labels=setNames(method_labels, method_names)) +
  scale_fill_manual(values = method_colors, labels=setNames(method_labels, method_names)) +
  xlab("Size of DA population") +
  xlim(0,7000) +
  ggpubr::stat_cor(label.x.npc = 1, label.y.npc = 1, hjust = 1) +
  ggsave(paste0(figdir, "pop_size.png"), height = 7, width = 8)

NA
NA
NA

Batch effect

Load louvain_batch

Visualize outcome in UMAP

  colData(embryo_sce) <- read_csv(coldata_file) %>% column_to_rownames() %>% DataFrame()
Error in is.connection(x) : object 'coldata_file' not found

Plot benchmark design

Design matrix

p1 <- lapply(pops, function(p) plot_outcome_umap(sce, 'milo', p, 0.7, seed, batchEffect, true=TRUE, rasterize=TRUE))

── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)
p2 <- lapply(pops, function(p) plot_outcome_umap(sce, 'milo', p, 0.8, seed, batchEffect, true=TRUE, rasterize=TRUE))

── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)
p3 <- lapply(pops, function(p) plot_outcome_umap(sce, 'milo', p, 0.9, seed, batchEffect, true=TRUE, rasterize=TRUE))

── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.


── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)
fig <- (wrap_plots(p1) /
  wrap_plots(p2) /
  wrap_plots(p3)) +
  plot_layout(guides="collect") &
  theme(legend.position = "right") 

fig +
  ggsave(paste0(figdir, "bm_design_UMAPs.png"), height = 8, width = 10)

Plot batch effect

Design matrix w batch effect

Non-linear batch effect

coldata_file <- list.files(indir, pattern=paste0(pop,".+", "enr",enr,".+",'seed', seed, ".coldata.csv"),
                           full.names = TRUE)
colData(embryo_sce) <- read_csv(coldata_file) %>% column_to_rownames() %>% DataFrame()

── Column specification ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
cols(
  .default = col_character(),
  sample = col_double(),
  pool = col_double(),
  sequencing.batch = col_double(),
  doub.density = col_double(),
  doublet = col_logical(),
  cluster = col_double(),
  cluster.sub = col_double(),
  cluster.stage = col_double(),
  cluster.theiler = col_double(),
  stripped = col_logical(),
  sizeFactor = col_double(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double()
)
ℹ Use `spec()` for the full column specifications.
  
batch_col="synth_batches"

embryo_sce <- add_batch_effect_nonlinear(embryo_sce, dims=c(3,5), theta_deg = 30)
embryo_sce <- runUMAP(embryo_sce, dimred="pca_batch", name = 'umap_batch', n_dimred=1:30)  

data.frame(reducedDim(embryo_sce, "umap_batch")) %>%
    rename(UMAP1=X1, UMAP2=X2) %>%
    mutate(true=embryo_sce$synth_batches) %>%
    ggplot(aes(UMAP1, UMAP2, color=true)) +
    geom_point(size=0.1) +
    scale_color_viridis_d(name="Batch", option="cividis") +
     theme_classic(base_size=18) +
      guides(color=guide_legend(override.aes = list(size=2))) +
     theme(axis.ticks = element_blank(),
           axis.text = element_blank()) +
     xlab("UMAP1") + ylab("UMAP2")


data.frame(reducedDim(embryo_sce, "UMAP")) %>%
    rename(UMAP1=X1, UMAP2=X2) %>%
    mutate(true=embryo_sce$synth_batches) %>%
    ggplot(aes(UMAP1, UMAP2, color=true)) +
    geom_point(size=0.1) +
    scale_color_viridis_d(name="Batch", option="cividis") +
     theme_classic(base_size=18) +
      guides(color=guide_legend(override.aes = list(size=2))) +
     theme(axis.ticks = element_blank(),
           axis.text = element_blank()) +
     xlab("UMAP1") + ylab("UMAP2")

NA
NA

Make non-linear batch effect for all populations

pop_enrs[1:3]
Error: object 'pop_enrs' not found

Running in run_DA_nonlinear.R.

Read all results

outdir <- "/nfs/team205/ed6/data/milo_benchmark/"
res_files <- list.files(outdir, pattern="NonLinear.+DAresults.+.csv")
res_files_full <- list.files(outdir, pattern="NonLinear.+DAresults.+.csv", full.names = TRUE)

## Make data frame w benchmark parameters
nonl_out_meta_df <- data.frame(file_id = str_remove_all(res_files, "benchmark_embryo_pop_|.csv")) %>%
  separate(col = file_id, sep = ".DAresults.", into=c("file_id", "method")) %>%
  separate(col = file_id, sep = "_enr", into=c("pop", "file_id")) %>%
  separate(col = file_id, sep = "_", into=c("enr", "seed", "batchEffect")) %>%
  mutate(seed=str_remove(seed, "seed"), batchEffect=str_remove(batchEffect, "batchEffect"))

## Load results
nonl_outcome_df <- lapply(seq_along(res_files_full), function(i){ 
  print(paste("Outcome no. ", i))
  benchmark_df <- read_csv(res_files_full[i]) %>%
      .outcome_by_prob(da_upper = 0.6) %>%
      mutate(DA_thresh=0.6) %>%
      ungroup() %>%
      dplyr::select(- method) %>%
      bind_cols(nonl_out_meta_df[i,]) 
  pop_enr <- as.numeric(nonl_out_meta_df[i,"enr"])
  benchmark_df
  }) %>%
  purrr::reduce(bind_rows)

nonl_outcome_df 

Correcting batch effect

library(batchelor)
# 
# be_sce <- be_sce_ls[[4]]
# coldata_file <- list.files(indir, pattern=paste0(pop,".+", "enr",enr,".+",'seed', seed, ".coldata.csv"),full.names = TRUE)
# colData(be_sce) <- DataFrame(read_csv(coldata_file) %>% column_to_rownames())

mnn_correct_batch_effect <- function(be_sce, k=50){
  ## Split in two SCE objects
  b1_be_sce <- be_sce[,be_sce$synth_batches=="B1"]
  b2_be_sce <- be_sce[,be_sce$synth_batches=="B2"]
  
  be_mnn <- reducedMNN(reducedDim(b1_be_sce, "pca.corrected"), reducedDim(b2_be_sce, "pca.corrected"), k=k)
  reducedDim(be_sce, "pca.MNN") <- be_mnn$corrected[colnames(be_sce),]
  be_sce
  }

## Simulate batch effects of different magnitude
save_corrected_be <- function(pop, pop_enr, seed, be_sd){
  ## Load coldata and PCA
  outdir <- '/nfs/team205/ed6/data/milo_benchmark/synthetic_data/'
  outprefix <- str_c("benchmark_embryo_pop_", pop, '_enr', pop_enr, "_seed", seed)
  coldata <- read_csv(paste0(outdir, outprefix, ".coldata.csv")) %>% column_to_rownames()
  X_pca <-read_csv(str_c(outdir, outprefix, "_batchEffect", be_sd, ".pca.csv")) %>% column_to_rownames()
  
  ## Add reduced dim + coldata to sce
  colData(embryo_sce) <- DataFrame(coldata)
  reducedDim(embryo_sce, "pca_batch") <- as.matrix(X_pca)
  
  set.seed(seed)
  sce_be <- mnn_correct_batch_effect(embryo_sce)
  X_pca <- reducedDim(sce_be, "pca.MNN")
  ## Save reduced dims
  write_csv(as.data.frame(X_pca) %>% rownames_to_column(), str_c(outdir, outprefix, "_batchEffect", be_sd,".MNNcorrected.pca.csv"))
  }

be_sds <- unique(out_meta_df$batchEffect)

for (pop in pops) {
    for (seed in seeds) {
      for (be_sd in c(0.5, 0.75, 1)) {
      pop_enr = 0.7
      save_corrected_be(pop, pop_enr, seed, be_sd)
      }
    }
  }

Read all results

outdir <- "/nfs/team205/ed6/data/milo_benchmark/"
res_files <- list.files(outdir, pattern=".+MNNcorrected.+DAresults.+.csv")
res_files_full <- list.files(outdir, pattern=".+MNNcorrected.+DAresults.+.csv", full.names = TRUE)
# in_files <- list.files("~/data/milo_benchmark/synthetic_data/", pattern="_enr0.[78].+coldata.csv")

## Make data frame w benchmark parameters
mnn_out_meta_df <- data.frame(file_id = str_remove_all(res_files, "benchmark_embryo_pop_|.csv")) %>%
  separate(col = file_id, sep = ".DAresults.", into=c("file_id", "method")) %>%
  separate(col = file_id, sep = "_enr", into=c("pop", "file_id")) %>%
  separate(col = file_id, sep = "_", into=c("enr", "seed", "batchEffect")) %>%
  mutate(seed=str_remove(seed, "seed"), batchEffect=str_remove(batchEffect, "batchEffect")) 

## Load results
mnn_outcome_df <- lapply(seq_along(res_files_full), function(i){ 
  print(paste("Outcome no. ", i))
  benchmark_df <- read_csv(res_files_full[i]) %>%
      .outcome_by_prob(da_upper = 0.6) %>%
      mutate(DA_thresh=0.6) %>%
      ungroup() %>%
      dplyr::select(- method) %>%
      bind_cols(mnn_out_meta_df[i,]) 
  pop_enr <- as.numeric(mnn_out_meta_df[i,"enr"])
  benchmark_df
  }) %>%
  purrr::reduce(bind_rows)

mnn_outcome_df %>%
  filter(method=="meld")

mnn_outcome_df %>%
  mutate(batchEffect = as.numeric(str_remove(batchEffect, ".MNNcorrected"))) %>%
  mutate(FDR = FP/(TP+FP)) %>%
  mutate(TPR=ifelse(is.nan(TPR), 0, TPR),
         FPR=ifelse(is.nan(FPR), 0, FPR),
          FDR=ifelse(is.nan(FDR), 0, FDR),
         Precision=ifelse(is.nan(Precision), 0, Precision)) %>%
  rename(metric=metric) %>%
  group_by(method, DA_thresh, batchEffect, enr) %>%
  summarise(mean_metric=mean(metric), 
            sd_metric=sd(metric)) %>%
  mutate(group=paste(method, enr)) %>%
  ggplot(aes(batchEffect, mean_metric, color=method)) +
    geom_line() +
  geom_ribbon(aes(ymin=mean_metric-sd_metric, ymax=mean_metric+sd_metric, fill=method), alpha=0.2, color=NA) +
  geom_point(size=3) +
  facet_grid(enr~., labeller="label_both") +
  xlab("Batch effect magnitude") +
    ylab(paste("mean", metric)) +
    theme_bw(base_size=16) +
  scale_color_brewer(palette="Dark2") +
  geom_hline(yintercept = 0.8, linetype=2) +
  scale_fill_brewer(palette="Dark2") 
`summarise()` regrouping output by 'method', 'DA_thresh', 'batchEffect' (override with `.groups` argument)

Plot UMAP

X_pca_mnn <- read_csv("/nfs/team205/ed6/data/milo_benchmark/synthetic_data/benchmark_embryo_pop_Somitic_mesoderm_enr0.8_seed43_batchEffect0.75.MNNcorrected.pca.csv") %>%
  column_to_rownames()

all(rownames(X_pca_mnn) == colnames(embryo_sce))
coldata <- read_csv("/nfs/team205/ed6/data/milo_benchmark/synthetic_data/benchmark_embryo_pop_Somitic_mesoderm_enr0.8_seed43.coldata.csv")
colData(embryo_sce) <- coldata %>% column_to_rownames() %>% DataFrame()
reducedDim(embryo_sce, "pca_batch") <- as.matrix(X_pca_mnn)
embryo_sce <- runUMAP(embryo_sce, dimred="pca_batch", name="umap_batch")

indir <- "~/data/milo_benchmark/synthetic_data/"
res <- read_csv("/nfs/team205/ed6/data/milo_benchmark/benchmark_embryo_pop_Somitic_mesoderm_enr0.8_seed43_batchEffect0.75.DAresults.milo.csv")
embryo_sce$pred <- res$pred
embryo_sce$true <- res$true
plotReducedDim(embryo_sce, "umap_batch", colour_by="Condition1_prob", point_size=0.1)
plotReducedDim(embryo_sce, "umap_batch", colour_by="pred", point_size=0.1)
plotReducedDim(embryo_sce, "umap_batch", colour_by="true", point_size=0.1)

res %>%
  .outcome_by_prob(da_upper = 0.6) %>%
  mutate(FDR = FP/(TP+FP)) 

Read results for different geometries

Linear

outdir <- "/nfs/team205/ed6/data/milo_benchmark/"
res_files <- list.files(outdir, pattern="linear.+DAresults")
res_files_full <- list.files(outdir, pattern="linear.+DAresults", full.names = TRUE)
in_files <- list.files("~/data/milo_benchmark/synthetic_data/", pattern="linear.+coldata.csv")

## Make data frame w benchmark parameters
linear_out_meta_df <- data.frame(file_id = str_remove_all(res_files, "benchmark_embryo_pop_|.csv")) %>%
  separate(col = file_id, sep = ".DAresults.", into=c("file_id", "method")) %>%
  separate(col = file_id, sep = "_enr", into=c("pop", "file_id")) %>%
  separate(col = file_id, sep = "_", into=c("enr", "seed", "batchEffect")) %>%
  mutate(seed=str_remove(seed, "seed"), batchEffect=str_remove(batchEffect, "batchEffect")) 

## Load results
linear_outcome_df <- lapply(seq_along(res_files_full), function(i){ 
  print(paste("Outcome no. ", i))
  benchmark_df <- read_csv(res_files_full[i]) %>%
      .outcome_by_prob(da_upper = 0.6) %>%
      mutate(DA_thresh=0.6) %>%
      ungroup() %>%
      dplyr::select(- method) %>%
      bind_cols(linear_out_meta_df[i,]) 
  pop_enr <- as.numeric(linear_out_meta_df[i,"enr"])
  benchmark_df
  }) %>%
  purrr::reduce(bind_rows)
[1] "Outcome no.  1"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  2"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  3"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  4"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  5"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  6"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  7"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  8"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  9"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  10"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  11"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  12"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  13"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  14"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  15"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  16"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  17"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  18"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  19"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  20"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  21"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  22"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  23"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  24"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  25"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  26"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  27"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  28"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  29"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  30"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  31"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  32"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  33"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  34"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  35"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  36"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  37"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  38"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  39"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  40"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  41"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  42"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  43"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  44"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  45"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  46"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  47"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  48"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  49"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  50"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  51"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  52"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  53"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  54"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  55"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  56"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  57"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  58"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  59"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  60"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  61"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  62"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  63"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  64"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  65"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  66"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  67"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  68"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  69"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  70"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  71"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  72"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  73"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  74"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  75"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  76"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  77"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  78"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  79"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  80"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  81"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  82"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  83"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  84"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  85"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  86"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  87"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  88"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  89"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  90"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  91"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  92"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  93"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  94"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  95"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  96"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  97"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  98"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  99"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  100"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  101"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  102"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  103"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  104"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  105"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  106"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  107"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  108"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  109"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  110"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  111"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  112"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  113"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  114"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  115"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  116"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  117"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  118"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  119"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  120"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  121"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  122"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  123"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  124"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  125"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  126"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  127"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  128"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  129"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  130"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  131"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  132"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  133"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  134"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  135"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  136"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  137"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  138"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  139"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  140"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  141"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  142"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  143"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  144"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  145"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  146"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  147"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  148"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  149"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  150"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  151"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  152"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  153"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  154"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  155"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  156"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  157"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  158"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  159"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  160"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  161"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  162"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  163"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  164"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  165"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  166"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  167"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  168"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  169"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  170"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  171"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  172"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  173"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  174"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  175"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  176"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  177"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  178"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  179"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  180"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  181"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  182"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  183"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  184"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  185"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  186"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  187"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  188"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  189"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  190"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  191"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  192"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  193"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  194"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  195"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  196"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  197"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  198"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  199"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  200"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  201"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  202"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  203"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  204"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  205"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  206"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  207"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  208"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  209"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  210"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  211"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  212"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  213"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  214"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  215"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  216"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  217"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  218"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  219"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  220"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  221"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  222"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  223"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  224"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  225"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  226"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  227"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  228"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  229"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  230"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  231"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  232"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  233"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  234"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  235"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  236"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  237"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  238"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  239"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  240"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  241"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  242"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  243"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  244"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  245"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  246"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  247"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  248"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  249"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  250"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  251"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  252"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  253"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  254"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  255"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  256"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  257"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  258"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  259"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  260"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  261"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  262"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  263"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  264"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  265"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  266"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  267"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  268"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  269"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  270"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  271"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  272"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  273"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  274"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  275"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  276"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  277"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  278"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  279"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  280"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  281"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  282"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  283"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  284"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  285"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  286"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  287"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  288"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  289"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  290"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  291"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  292"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  293"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  294"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  295"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  296"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  297"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  298"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  299"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  300"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  301"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  302"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  303"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  304"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  305"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  306"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  307"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  308"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  309"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  310"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  311"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  312"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  313"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  314"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  315"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  316"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  317"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  318"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  319"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  320"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  321"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  322"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  323"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  324"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  325"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  326"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  327"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  328"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  329"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  330"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  331"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  332"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  333"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  334"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  335"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  336"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  337"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  338"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  339"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  340"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  341"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  342"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  343"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  344"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  345"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  346"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  347"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  348"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  349"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  350"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  351"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  352"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  353"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  354"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  355"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  356"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  357"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
linear_outcome_df 
pl_df <- linear_outcome_df %>%
  filter(method!="milo_batch") %>%
  mutate(FDR = FP/(TP+FP)) %>%
  mutate(TPR=ifelse(is.nan(TPR), 0, TPR),
         FPR=ifelse(is.nan(FPR), 0, FPR),
         FDR=ifelse(is.nan(FDR), 0, FDR),
         Precision=ifelse(is.nan(Precision), 0, Precision)) %>%
  mutate(pop=str_replace(pop, "_", " ")) %>%
  mutate(pop_size=pop_sizes[pop])  %>%
  arrange(pop_size) %>%
  mutate(pop=factor(pop, levels=unique(pop))) %>%
  filter(DA_thresh >= 0.6 & batchEffect==0) 

pl_right <- pl_df %>%
  ggplot(aes(method, TPR, color=method)) + 
  geom_boxplot() +
  ggbeeswarm::geom_quasirandom(alpha=0.5) +
  geom_hline(yintercept = 0.8, linetype=2) +
  theme_bw(base_size = 16) +
  scale_color_brewer(palette="Dark2") +
  facet_grid(enr~., labeller = 'label_both') +
pl_df %>%
  ggplot(aes(method, FDR, color=method)) + 
  geom_boxplot() +
  ggbeeswarm::geom_quasirandom(alpha=0.5) +
  geom_hline(yintercept = 0.1, linetype=2) +
  theme_bw(base_size = 16) +
  scale_color_brewer(palette="Dark2") +
  facet_grid(enr~., labeller = 'label_both') +
plot_layout(guides='collect') &
  theme(axis.text.x=element_blank())

pl_right

Plot UMAP

linear_sce <- readRDS("~/data/milo_benchmark/linear_data_bm.RDS")
indir <- "~/data/milo_benchmark/synthetic_data/"

names(reducedDims(linear_sce))[2] <- "umap_batch"
colnames(reducedDims(linear_sce)[[2]]) <- c("X1", "X2") 

pl_top <- plot_outcome_umap(linear_sce, method = 'milo', pop="M5", enr = 0.9, seed = 43,batchEffect = 0, true = TRUE, data_id="linear") + coord_fixed() + theme(legend.position="right")

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  celltype = col_character(),
  synth_labels = col_character(),
  synth_samples = col_character(),
  synth_batches = col_character(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double(),
  true_labels = col_character(),
  cell = col_character()
)


── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)
plot_linear <- ((pl_top) / (pl_right)) +
  plot_layout(heights = c(1,2))
plot_linear

Branching

outdir <- "/nfs/team205/ed6/data/milo_benchmark/"
res_files <- list.files(outdir, pattern="branching.+DAresults")
res_files_full <- list.files(outdir, pattern="branching.+DAresults", full.names = TRUE)
in_files <- list.files("~/data/milo_benchmark/synthetic_data/", pattern="branching.+coldata.csv")

## Make data frame w benchmark parameters
branch_out_meta_df <- data.frame(file_id = str_remove_all(res_files, "benchmark_embryo_pop_|.csv")) %>%
  separate(col = file_id, sep = ".DAresults.", into=c("file_id", "method")) %>%
  separate(col = file_id, sep = "_enr", into=c("pop", "file_id")) %>%
  separate(col = file_id, sep = "_", into=c("enr", "seed", "batchEffect")) %>%
  mutate(seed=str_remove(seed, "seed"), batchEffect=str_remove(batchEffect, "batchEffect")) 

## Load results
branch_outcome_df <- lapply(seq_along(res_files_full), function(i){ 
  print(paste("Outcome no. ", i))
  benchmark_df <- read_csv(res_files_full[i]) %>%
      .outcome_by_prob(da_upper = 0.6) %>%
      mutate(DA_thresh=0.6) %>%
      ungroup() %>%
      dplyr::select(- method) %>%
      bind_cols(branch_out_meta_df[i,]) 
  pop_enr <- as.numeric(branch_out_meta_df[i,"enr"])
  benchmark_df
  }) %>%
  purrr::reduce(bind_rows)
[1] "Outcome no.  1"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  2"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  3"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  4"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  5"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  6"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  7"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  8"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  9"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  10"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  11"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  12"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  13"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  14"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  15"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  16"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  17"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  18"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  19"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  20"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  21"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  22"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  23"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  24"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  25"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  26"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  27"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  28"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  29"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  30"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  31"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  32"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  33"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  34"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  35"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  36"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  37"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  38"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  39"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  40"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  41"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  42"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  43"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  44"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  45"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  46"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  47"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  48"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  49"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  50"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  51"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  52"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  53"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  54"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  55"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  56"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  57"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  58"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  59"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  60"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  61"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  62"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  63"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  64"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  65"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  66"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  67"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  68"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  69"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  70"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  71"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  72"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  73"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  74"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  75"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  76"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  77"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  78"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  79"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  80"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  81"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  82"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  83"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  84"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  85"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  86"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  87"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  88"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  89"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  90"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  91"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  92"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  93"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  94"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  95"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  96"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  97"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  98"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  99"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  100"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  101"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  102"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  103"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  104"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  105"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  106"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  107"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  108"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  109"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  110"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  111"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  112"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  113"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  114"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  115"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  116"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  117"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  118"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  119"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  120"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  121"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  122"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  123"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  124"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  125"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  126"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  127"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  128"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  129"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  130"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  131"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  132"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  133"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  134"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  135"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  136"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  137"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  138"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  139"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  140"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  141"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  142"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  143"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  144"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  145"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  146"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  147"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  148"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  149"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  150"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  151"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  152"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  153"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  154"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  155"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  156"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  157"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  158"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  159"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  160"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  161"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  162"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  163"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  164"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  165"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  166"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  167"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  168"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  169"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  170"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  171"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  172"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  173"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  174"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  175"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  176"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  177"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  178"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  179"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  180"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  181"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  182"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  183"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  184"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  185"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  186"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  187"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  188"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  189"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  190"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  191"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  192"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  193"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  194"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  195"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  196"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  197"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  198"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  199"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  200"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  201"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  202"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  203"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  204"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  205"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  206"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  207"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  208"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  209"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  210"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  211"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  212"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  213"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  214"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  215"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  216"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  217"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  218"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  219"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  220"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  221"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  222"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  223"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  224"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  225"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  226"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  227"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  228"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  229"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  230"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  231"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  232"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  233"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  234"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  235"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  236"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  237"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  238"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  239"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  240"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  241"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  242"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  243"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  244"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  245"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  246"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  247"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  248"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  249"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  250"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  251"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  252"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  253"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  254"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  255"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  256"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  257"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  258"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  259"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  260"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  261"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  262"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  263"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  264"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  265"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  266"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  267"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  268"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  269"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  270"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  271"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  272"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  273"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  274"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  275"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  276"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  277"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  278"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  279"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  280"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  281"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  282"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  283"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  284"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  285"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  286"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  287"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  288"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  289"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  290"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  291"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  292"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  293"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  294"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  295"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  296"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  297"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  298"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  299"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  300"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  301"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  302"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  303"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  304"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  305"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  306"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  307"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  308"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  309"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  310"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  311"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  312"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  313"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  314"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  315"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  316"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  317"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  318"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  319"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  320"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  321"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  322"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  323"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  324"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  325"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  326"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  327"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  328"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  329"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  330"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  331"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  332"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  333"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  334"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  335"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  336"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  337"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  338"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  339"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  340"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  341"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  342"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  343"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  344"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  345"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  346"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  347"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  348"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  349"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  350"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  351"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  352"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  353"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  354"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  355"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  356"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  357"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  358"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  359"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  360"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  361"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  362"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  363"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  364"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  365"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  366"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  367"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  368"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  369"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  370"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  371"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  372"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  373"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  374"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  375"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  376"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  377"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  378"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  379"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  380"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  381"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  382"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  383"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  384"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  385"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  386"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  387"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  388"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  389"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  390"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  391"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  392"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  393"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  394"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  395"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  396"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  397"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  398"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  399"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  400"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  401"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  402"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  403"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  404"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  405"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  406"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  407"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  408"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  409"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  410"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  411"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  412"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  413"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  414"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  415"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  416"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  417"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  418"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  419"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  420"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  421"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  422"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  423"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  424"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  425"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  426"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  427"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  428"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  429"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  430"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  431"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  432"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  433"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  434"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  435"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  436"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  437"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  438"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  439"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  440"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  441"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  442"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  443"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  444"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  445"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  446"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  447"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  448"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  449"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  450"

── Column specification ──────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  451"

── Column specification ──────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
branch_outcome_df 
NA
pl_df <- branch_outcome_df %>%
  filter(method!="milo_batch") %>%
  mutate(FDR = FP/(TP+FP)) %>%
  mutate(TPR=ifelse(is.nan(TPR), 0, TPR),
         FPR=ifelse(is.nan(FPR), 0, FPR),
         FDR=ifelse(is.nan(FDR), 0, FDR),
         Precision=ifelse(is.nan(Precision), 0, Precision)) %>%
  mutate(pop=str_replace(pop, "_", " ")) %>%
  mutate(pop_size=pop_sizes[pop])  %>%
  arrange(pop_size) %>%
  mutate(pop=factor(pop, levels=unique(pop))) %>%
  filter(DA_thresh >= 0.6 & batchEffect==0) 

pl_right <- pl_df %>%
  ggplot(aes(method, TPR, color=method)) + 
  geom_boxplot() +
  ggbeeswarm::geom_quasirandom(alpha=0.5) +
  geom_hline(yintercept = 0.8, linetype=2) +
  theme_bw(base_size = 16) +
  scale_color_brewer(palette="Dark2") +
  facet_grid(enr~., labeller = 'label_both') +
pl_df %>%
  ggplot(aes(method, FDR, color=method)) + 
  geom_boxplot() +
  ggbeeswarm::geom_quasirandom(alpha=0.5) +
  geom_hline(yintercept = 0.1, linetype=2) +
  theme_bw(base_size = 16) +
  scale_color_brewer(palette="Dark2") +
  facet_grid(enr~., labeller = 'label_both') +
plot_layout(guides='collect') &
  theme(axis.text.x=element_blank())

pl_right

Plot UMAP

branch_sce <- readRDS("~/data/milo_benchmark/branching_data_bm.RDS")
indir <- "~/data/milo_benchmark/synthetic_data/"

names(reducedDims(branch_sce))[2] <- "umap_batch"
colnames(reducedDims(branch_sce)[[2]]) <- c("X1", "X2") 

pl_top <- plot_outcome_umap(branch_sce, method = 'milo', pop="M5", enr = 0.9, seed = 43,batchEffect = 0, true = TRUE, data_id="branching") + coord_fixed() + theme(legend.position="right")

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  celltype = col_character(),
  synth_labels = col_character(),
  synth_samples = col_character(),
  synth_batches = col_character(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double(),
  true_labels = col_character(),
  cell = col_character()
)


── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)
plot_branch <- ((pl_top) / (pl_right)) +
  plot_layout(heights = c(1,2))
plot_branch

Simple clustering

outdir <- "/nfs/team205/ed6/data/milo_benchmark/"
res_files <- list.files(outdir, pattern="cluster.+DAresults")
res_files_full <- list.files(outdir, pattern="cluster.+DAresults", full.names = TRUE)
in_files <- list.files("~/data/milo_benchmark/synthetic_data/", pattern="cluster.+coldata.csv")

## Make data frame w benchmark parameters
cluster_out_meta_df <- data.frame(file_id = str_remove_all(res_files, "benchmark_embryo_pop_|.csv")) %>%
  separate(col = file_id, sep = ".DAresults.", into=c("file_id", "method")) %>%
  separate(col = file_id, sep = "_enr", into=c("pop", "file_id")) %>%
  separate(col = file_id, sep = "_", into=c("enr", "seed", "batchEffect")) %>%
  mutate(seed=str_remove(seed, "seed"), batchEffect=str_remove(batchEffect, "batchEffect")) 

## Load results
cluster_outcome_df <- lapply(seq_along(res_files_full), function(i){ 
  print(paste("Outcome no. ", i))
  benchmark_df <- read_csv(res_files_full[i]) %>%
      .outcome_by_prob(da_upper = 0.6) %>%
      mutate(DA_thresh=0.6) %>%
      ungroup() %>%
      dplyr::select(- method) %>%
      bind_cols(cluster_out_meta_df[i,]) 
  pop_enr <- as.numeric(cluster_out_meta_df[i,"enr"])
  benchmark_df
  }) %>%
  purrr::reduce(bind_rows)
[1] "Outcome no.  1"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  2"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  3"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  4"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  5"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  6"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  7"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  8"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  9"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  10"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  11"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  12"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  13"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  14"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  15"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  16"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  17"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  18"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  19"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  20"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  21"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  22"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  23"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  24"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  25"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  26"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  27"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  28"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  29"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  30"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  31"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  32"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  33"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  34"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  35"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  36"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  37"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  38"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  39"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  40"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  41"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  42"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  43"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  44"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  45"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  46"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  47"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  48"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  49"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  50"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  51"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  52"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  53"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  54"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  55"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  56"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  57"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  58"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  59"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  60"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  61"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  62"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  63"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  64"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  65"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  66"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  67"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  68"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  69"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  70"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  71"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  72"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  73"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  74"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  75"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  76"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  77"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  78"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  79"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  80"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  81"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  82"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  83"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  84"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  85"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  86"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  87"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  88"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  89"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  90"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  91"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  92"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  93"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  94"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  95"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  96"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  97"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  98"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  99"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  100"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  101"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  102"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  103"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  104"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  105"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  106"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  107"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  108"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  109"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  110"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  111"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  112"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  113"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  114"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  115"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  116"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  117"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  118"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  119"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  120"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  121"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  122"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  123"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  124"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  125"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  126"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  127"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  128"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  129"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  130"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  131"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  132"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  133"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  134"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  135"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  136"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  137"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  138"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  139"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  140"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  141"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  142"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  143"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  144"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  145"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  146"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  147"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  148"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  149"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  150"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  151"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  152"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  153"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

the standard deviation is zero`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  154"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  155"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  156"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  157"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  158"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  159"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  160"

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Condition2 = col_double(),
  method = col_character(),
  true = col_character(),
  true_prob = col_double()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  161"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
[1] "Outcome no.  162"

── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)

`summarise()` regrouping output by 'method' (override with `.groups` argument)
cluster_outcome_df 
NA
pl_df <- cluster_outcome_df %>%
  filter(method!="milo_batch") %>%
  mutate(FDR = FP/(TP+FP)) %>%
  mutate(TPR=ifelse(is.nan(TPR), 0, TPR),
         FPR=ifelse(is.nan(FPR), 0, FPR),
         FDR=ifelse(is.nan(FDR), 0, FDR),
         Precision=ifelse(is.nan(Precision), 0, Precision)) %>%
  mutate(pop=str_replace(pop, "_", " ")) %>%
  mutate(pop_size=pop_sizes[pop])  %>%
  arrange(pop_size) %>%
  mutate(pop=factor(pop, levels=unique(pop))) %>%
  filter(DA_thresh >= 0.6 & batchEffect==0) 

pl_right <- pl_df %>%
  ggplot(aes(method, TPR, color=method)) +
  geom_boxplot() +
  ggbeeswarm::geom_quasirandom(alpha=0.5) +
  geom_hline(yintercept = 0.8, linetype=2) +
  theme_bw(base_size = 16) +
  scale_color_brewer(palette="Dark2") +
  facet_grid(enr~., labeller = 'label_both') +
pl_df %>%
  ggplot(aes(method, FDR, color=method)) + 
  geom_boxplot() +
  ggbeeswarm::geom_quasirandom(alpha=0.5) +
  geom_hline(yintercept = 0.1, linetype=2) +
  theme_bw(base_size = 16) +
  scale_color_brewer(palette="Dark2") +
  facet_grid(enr~., labeller = 'label_both') +
plot_layout(guides='collect') &
  theme(axis.text.x=element_blank())

pl_right

Plot UMAP

cluster_sce <- readRDS("~/data/milo_benchmark/cluster_data_bm.RDS")
indir <- "~/data/milo_benchmark/synthetic_data/"

names(reducedDims(cluster_sce))[2] <- "umap_batch"
colnames(reducedDims(cluster_sce)[[2]]) <- c("X1", "X2") 
pl_top <- plot_outcome_umap(cluster_sce, method = 'milo', pop="3", enr = 0.9, seed = 43,batchEffect = 0, true = TRUE, data_id="cluster") + theme(legend.position="right")

── Column specification ───────────────────────────────────────
cols(
  rowname = col_character(),
  Block = col_character(),
  Replicate = col_character(),
  synth_labels = col_character(),
  synth_samples = col_character(),
  synth_batches = col_character(),
  Condition1_prob = col_double(),
  Condition2_prob = col_double(),
  true_labels = col_character(),
  celltype = col_double(),
  cell = col_character()
)


── Column specification ───────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)
plot_cluster <- ((pl_top) / (pl_right)) +
  plot_layout(heights = c(1,2))
plot_cluster

Cydar on simple trajectory

Pick radius parameter for different datasets: For each hypersphere centred on a cell, the radius required to include a certain number of nearest neighbours is computed.

sample_col = "synth_samples"
d=30
sce <- readRDS("/nfs/team205/ed6/data/milo_benchmark/cluster_data_bm.RDS")
sample_ls <- split(1:ncol(sce), sce[[sample_col]])
processed.exprs <- lapply(sample_ls, function(s) reducedDim(sce[,s], "pca.corrected")[,1:d])
cd <- prepareCellData(processed.exprs)
boxplot(neighborDistances(cd, neighbors=50, as.tol=TRUE))

unique(sce$celltype)
 [1] "M3"  "M8"  "M5"  "M2"  "M1"  "M4"  "M7"  "M6"  "M10" "M9" 
unique(sce$celltype)
[1] "M4" "M6" "M2" "M5" "M1" "M7" "M3"
sample_col = "synth_samples"
d=30
sce <- embryo_sce
sample_ls <- split(1:ncol(sce), sce[[sample_col]])
processed.exprs <- lapply(sample_ls, function(s) reducedDim(sce[,s], "pca.corrected")[,1:d])
cd <- prepareCellData(processed.exprs)
boxplot(neighborDistances(cd, neighbors=50, as.tol=TRUE))


cydar_res <- runDA(sce, coldata, X_pca, "cydar", out_type = "labels",d = 30,
                    params=list(cydar=list(tol=tol_dataset[[data_id]], downsample=3)))
df <- .outcome_by_prob(cydar_res, 0.6) 
the condition has length > 1 and only the first element will be used`summarise()` regrouping output by 'method' (override with `.groups` argument)
df
sim.design <- model.matrix(design, data=design_df)[colnames(cd.dge),]
sim.dge <- estimateDisp(cd.dge, sim.design)
sim.fit <- glmQLFit(sim.dge, sim.design)
sim.res <- glmQLFTest(sim.fit, coef=2)

# control the spatial FDR
cydar.res <- sim.res$table
cydar.res$SpatialFDR <- spatialFDR(intensities(cd), sim.res$table$PValue)
boxplot(sim.dge$counts)
hist(cydar.res$PValue)

cydar.res$SpatialFDR < 0.1

Try downsampling one of the 2 conditions

sce
class: SingleCellExperiment 
dim: 100 900 
metadata(0):
assays(1): logcounts
rownames(100): Gene1 Gene2 ... Gene99 Gene100
rowData names(0):
colnames(900): Cell1 Cell2 ... Cell899 Cell900
colData names(10): Block Replicate ... celltype cell
reducedDimNames(3): pca.corrected UMAP pca_batch
altExpNames(0):
benchmark_df <- read_csv("/nfs/team205/ed6/data/milo_benchmark/benchmark_embryo_pop_Erythroid2_enr0.9_seed43_batchEffect0.DAresults.daseq.csv") 

── Column specification ───────────────────────────────────────────────────
cols(
  true_prob = col_double(),
  true = col_character(),
  method = col_character(),
  pred = col_character()
)
.outcome_by_prob(benchmark_df, 0.6)
`summarise()` regrouping output by 'method' (override with `.groups` argument)
## Check if conditions were swapped in test
pred_cor <- benchmark_df %>%
  mutate(pred=factor(pred, levels=c("NegLFC", "NotDA", "PosLFC"), ordered = TRUE)) %>%
  mutate(pred=as.numeric(pred)) %>%
  summarise(cor(pred, true_prob))
if (pred_cor < 0) {
  benchmark_df <- mutate(benchmark_df, pred = ifelse(pred=="NegLFC", "PosLFC", ifelse(pred=="PosLFC", "NegLFC", "NotDA")))
}

.outcome_by_prob(benchmark_df, 0.6)
`summarise()` regrouping output by 'method' (override with `.groups` argument)
LS0tCnRpdGxlOiAiU2VtaS1zeW50aGV0aWMgREEgZGF0YSAtIE1vdXNlIEdhc3RydWxhdGlvbiBhdGxhcyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KE1vdXNlR2FzdHJ1bGF0aW9uRGF0YSkKbGlicmFyeShTaW5nbGVDZWxsRXhwZXJpbWVudCkKbGlicmFyeShzY2F0ZXIpCmxpYnJhcnkoc2NyYW4pCmxpYnJhcnkoYml0NjQpCmxpYnJhcnkocGF0Y2h3b3JrKQoKb3B0aW9ucyhkaWdpdHM9MykKc291cmNlKCd+L21pbG8vbm90ZWJvb2tzL2JlbmNobWFyay9iZW5jaG1hcmtfdXRpbHMuUicpCmBgYAoKYGBge3J9CmZpZ2RpciA8LSAifi9tb3VudC9nZHJpdmUvbWlsby9GaWd1cmVzL2JlbmNobWFya192Mi8iCmlmICghZGlyLmV4aXN0cyhmaWdkaXIpKSB7CiAgZGlyLmNyZWF0ZShmaWdkaXIpICAKfQoKYGBgCgoKIyMjIExvYWQgZGF0YXNldAoKU2VsZWN0IHNhbXBsZXMgZnJvbSBsYXRlIHRpbWUgcG9pbnRzIChldmVuIG51bWJlciBvZiByZXBsaWNhdGVzKQoKYGBge3J9CkF0bGFzU2FtcGxlTWV0YWRhdGEgJT4lCiAgYXJyYW5nZShzdGFnZSkgJT4lCiAgbXV0YXRlKHNhbXBsZT1mYWN0b3Ioc2FtcGxlLCBsZXZlbHM9dW5pcXVlKHNhbXBsZSkpKSAlPiUKICBnZ3Bsb3QoYWVzKHN0YWdlLCBzYW1wbGUpKSArCiAgZ2VvbV9wb2ludCgpCgpsYXRlX3NhbXBsZXMgPC0gQXRsYXNTYW1wbGVNZXRhZGF0YSAlPiUKICBmaWx0ZXIoc3RhZ2UgJWluJSBjKCJFNy43NSIsICJFOC4wIiwgIkU4LjI1IiwgIkU4LjUiKSkgJT4lCiAgcHVsbChzYW1wbGUpCmBgYAoKYGBge3J9CmVtYnJ5b19zY2UgPC0gRW1icnlvQXRsYXNEYXRhKHR5cGU9InByb2Nlc3NlZCIsIHNhbXBsZXMgPSBsYXRlX3NhbXBsZXMpCmBgYApgYGB7cn0KZGF0YS5mcmFtZShjb2xEYXRhKGVtYnJ5b19zY2UpKSAlPiUKICBnZ3Bsb3QoYWVzKGFzLmZhY3RvcihzYW1wbGUpLCBhcy5mYWN0b3IocG9vbCkpKSArIGdlb21fcG9pbnQoKQpgYGAKYGBge3J9CmVtYnJ5b19zY2UKYGBgCgoKIyMgUHJlcHJvY2Vzc2luZwpgYGB7cn0KbG9nY291bnRzKGVtYnJ5b19zY2UpIDwtIGxvZzFwKGNvdW50cyhlbWJyeW9fc2NlKSkKIyMgRXhjbHVkZSB6ZXJvIGNvdW50cyBnZW5lcwprZWVwLnJvd3MgPC0gcm93U3Vtcyhsb2djb3VudHMoZW1icnlvX3NjZSkpICE9IDAKZW1icnlvX3NjZSA8LSBlbWJyeW9fc2NlW2tlZXAucm93cywgXQoKZGVjIDwtIG1vZGVsR2VuZVZhcihlbWJyeW9fc2NlKQpodmdzIDwtIGdldFRvcEhWR3MoZGVjLCBuPTUwMDApCgojIyBEcm9wIGNlbGxzIHdpdGggTkFzIGluIGNvcnJlY3RlZCBwY2EgKGxvdyBxdWFsaXR5KQplbWJyeW9fc2NlIDwtIGVtYnJ5b19zY2VbLGFwcGx5KHJlZHVjZWREaW0oZW1icnlvX3NjZSwgInBjYS5jb3JyZWN0ZWQiKSwgMSwgZnVuY3Rpb24oeCkgYWxsKCFpcy5uYSh4KSkpXQoKIyMgUnVuIFVNQVAgKHRoZSBkYXRhIGhhcyBiZWVuIHN1YnNldHRlZCkKIyBlbWJyeW9fc2NlIDwtIHNjYXRlcjo6cnVuUENBKGVtYnJ5b19zY2UsIHN1YnNldF9yb3c9aHZncykKZW1icnlvX3NjZSA8LSBzY2F0ZXI6OnJ1blVNQVAoZW1icnlvX3NjZSwgZGltcmVkPSJwY2EuY29ycmVjdGVkIikKYGBgCgpgYGB7ciwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTB9CnBsb3RSZWR1Y2VkRGltKGVtYnJ5b19zY2UsICJVTUFQIiwgY29sb3VyX2J5PSJjZWxsdHlwZSIsIHRleHRfYnk9ImNlbGx0eXBlIiwgcG9pbnRfc2l6ZT0wLjEpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzPUVtYnJ5b0NlbGx0eXBlQ29sb3VycykgKwogIGd1aWRlcyhjb2xvcj1ndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplPTIpKSkKYGBgCgpTYXZlIG9iamVjdCA0IGJlbmNobWFyawoKYGBge3J9CnNhdmVSRFMoZW1icnlvX3NjZSwgIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay9lbWJyeW9fZGF0YV9ibS5SRFMiKQoKZW1icnlvX3NjZSA8LSByZWFkUkRTKCIvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvZW1icnlvX2RhdGFfYm0uUkRTIikKYGBgCgpTYXZlIGxpc3Qgb2YgY2VsbHR5cGUgbmFtZXMgYW5kIHNhbXBsZSBieSBzaXplcwoKYGBge3J9CmZvciAoaSBpbiAxOjMpIHsKICBwb3Bfc2l6ZV9kZiA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKGVtYnJ5b19zY2UkY2VsbHR5cGUpKSAlPiUKICByZW5hbWUocG9wPVZhcjEsIHBvcF9zaXplPUZyZXEpICU+JQogIG11dGF0ZShzaXplX2JpbiA9IGN1dChwb3Bfc2l6ZSwgYnJlYWtzID0gMTApKSAlPiUKICBncm91cF9ieShzaXplX2JpbikgJT4lCiAgc2FtcGxlX24oc2l6ZT0xKSAKICB3cml0ZShhcy5jaGFyYWN0ZXIocG9wX3NpemVfZGYkcG9wKSwgZ2x1ZSgiL25mcy90ZWFtMjA1L2VkNi9kYXRhL21pbG9fYmVuY2htYXJrL3BvcF9zYW1wbGVfe2l9LnR4dCIpKQp9CmBgYAoKCgojIyBTaW11bGF0ZSBPTkUgREEgcmVnaW9uCgpgYGB7ciwgZmlnLmhlaWdodD03LCBmaWcud2lkdGg9N30KLnBsb3RfcHJvYiA8LSBmdW5jdGlvbihwb3AsIHBvcF9lbnIpewogIGVtYnJ5b19zY2UgPC0gYWRkX3N5bnRoZXRpY19sYWJlbHNfcG9wKGVtYnJ5b19zY2UsIHBvcCA9IHBvcCwgcG9wX2NvbD0iY2VsbHR5cGUiLCBwb3BfZW5yID0gcG9wX2VucikgCiAgcGxvdFVNQVAoZW1icnlvX3NjZSwgY29sb3VyX2J5PSJDb25kaXRpb24xX3Byb2IiLCBwb2ludF9zaXplPTAuMSkgKyBzY2FsZV9jb2xvcl92aXJpZGlzX2MobGltaXRzPWMoMC41LDEpKQp9CgpwbF9sc18xIDwtIGxhcHBseShjKDAuNywgMC44NSwgMSksIGZ1bmN0aW9uKHgpIC5wbG90X3Byb2IoIlBhcmF4aWFsIG1lc29kZXJtIiwgeCkpCnBsX2xzXzIgPC0gbGFwcGx5KGMoMC43LCAwLjg1LCAxKSwgZnVuY3Rpb24oeCkgLnBsb3RfcHJvYigiRXBpYmxhc3QiLCB4KSkKcGxfbHNfMyA8LSBsYXBwbHkoYygwLjcsIDAuODUsIDEpLCBmdW5jdGlvbih4KSAucGxvdF9wcm9iKCJFcnl0aHJvaWQxIiwgeCkpCgp3cmFwX3Bsb3RzKGMocGxfbHNfMSwgcGxfbHNfMiwgcGxfbHNfMykpICsKICBwbG90X2xheW91dChuY29sPTMsIG5yb3c9MywgZ3VpZGVzPSdjb2xsZWN0JykgKwpgYGAKCiMjIFRyeSBvbmUgbWV0aG9kIGF0IHRoZSB0aW1lICh0byBwaWNrIHBhcmFtcykKCjwhLS0gYGBge3J9IC0tPgo8IS0tIGVtYnJ5b19zY2UgPC0gcmVhZFJEUygiL25mcy90ZWFtMjA1L2VkNi9kYXRhL21pbG9fYmVuY2htYXJrL2VtYnJ5b19kYXRhX2JtLlJEUyIpIC0tPgoKPCEtLSAjIEJ1aWxkIEtOTiBncmFwaCBmb3Igc21vb3RoaW5nIC0tPgo8IS0tIFhfcmVkX2RpbSA9IHJlZHVjZWREaW0oZW1icnlvX3NjZSwgInBjYS5jb3JyZWN0ZWQiKVssMTozMF0gLS0+CjwhLS0gZ3JhcGggPSBidWlsZEtOTkdyYXBoKHQoWF9yZWRfZGltKSwgayA9IDE1KSAgIC0tPgoKPCEtLSAjIyBTaW11bGF0ZSBsYWJlbHMgLS0+CjwhLS0gc2VlZD0yMDIyIC0tPgo8IS0tIGVtYnJ5b19zY2UgPC0gYWRkX3N5bnRoZXRpY19sYWJlbHMoZW1icnlvX3NjZSwgIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb25lbnRzID0gMTAsICAgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWREaW09J3BjYS5jb3JyZWN0ZWQnLCAgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVkPXNlZWQsICAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtubl9ncmFwaCA9IGdyYXBoLCAgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX3JlcGxpY2F0ZXMgPSA2KSAtLT4KPCEtLSB0cnVlX2xhYmVscyA8LSBpZmVsc2UoZW1icnlvX3NjZSRDb25kaXRpb24yX3Byb2IgPCAwLjQsICJOZWdMRkMiLCBpZmVsc2UoZW1icnlvX3NjZSRDb25kaXRpb24yX3Byb2IgPiAwLjYsICJQb3NMRkMiLCAiTm90REEiKSkgLS0+CjwhLS0gY29sRGF0YShlbWJyeW9fc2NlKVtbInRydWVfbGFiZWxzIl1dIDwtIHRydWVfbGFiZWxzIC0tPgoKPCEtLSBlbWJyeW9fc2NlIDwtIHJ1blVNQVAoZW1icnlvX3NjZSwgZGltcmVkPSJwY2EuY29ycmVjdGVkIiwgbmFtZSA9ICdVTUFQJywgbl9kaW1yZWQ9MTozMCkgLS0+CjwhLS0gYGBgIC0tPgoKCjwhLS0gRGl2aWRlIGNlbGxzIGludG8gdHJ1ZSBhZmZlY3RlZCBzdWJwb3B1bGF0aW9uczogdGFrZSBLTk4gYWRqYWNlbmN5IG1hdHJpeCwgZmlsdGVyIG91dCBlZGdlcyBiZXR3ZWVuIGNlbGxzIHdpdGggZGlmZmVyZW50IGxhYmVsLCB0aGVuIGRvIGxvdXZhaW5fY2x1c3RlcmluZyBhdCBoaWdoIHJlcyAtLT4KCjwhLS0gYGBge3J9IC0tPgoKPCEtLSBlbWJyeW9fc2NlIDwtIGNsdXN0ZXJfc3ludGhldGljX2xhYmVscyhlbWJyeW9fc2NlLCBncmFwaCkgLS0+CjwhLS0gcGxvdFJlZHVjZWREaW0oZW1icnlvX3NjZSwgZGltcmVkPSJVTUFQIiwgY29sb3VyX2J5PSJ0cnVlX2xhYmVscyIsIHBvaW50X3NpemU9MC4yKSAgLS0+CjwhLS0gcGxvdFJlZHVjZWREaW0oZW1icnlvX3NjZSwgZGltcmVkPSJVTUFQIiwgY29sb3VyX2J5PSJ0cnVlX0RBX2NsdXN0IiwgIC0tPgo8IS0tICAgICAgICAgICAgICAgIHRleHRfYnk9InRydWVfREFfY2x1c3QiLCAgLS0+CjwhLS0gICAgICAgICAgICAgICAgcG9pbnRfc2l6ZT0wLjIpICAtLT4KPCEtLSBgYGAgLS0+CgojIyMgQ3lkYXIKCmBgYHtyfQpsaWJyYXJ5KGN5ZGFyKQoKIyMgQ3lkYXIKY3lkYXJfcmVzIDwtIHJ1bl9jeWRhcihlbWJyeW9fc2NlLCB0b2w9MywgZD0zMCkKCnBsb3QoY3lkYXJfcmVzJERBcmVzJGxvZ0ZDLCAtbG9nMTAoY3lkYXJfcmVzJERBcmVzJFNwYXRpYWxGRFIpLCB4bGFiPSdsb2dGQycsIHlsYWI9Ii1sb2cxMChTcGF0aWFsRkRSKSIpCmFibGluZSh2PWF2ZUxvZ0NQTSgxLG1lYW4oY3lkYXJfcmVzJENkJHRvdGFscykpKQoKY3lkYXJfb3V0IDwtIGN5ZGFyMm91dHB1dChjeWRhcl9yZXMkQ2QsIGN5ZGFyX3JlcyREQXJlcywgb3V0X3R5cGUgPSAiY29udGludW91cyIpCgpoaXN0KGN5ZGFyX3JlcyREQXJlcyRQVmFsdWUpCmBgYAoKIyMjIExvdXZhaW4KCmBgYHtyfQpsaWJyYXJ5KGJyb29tKQoKIyMgTG91dmFpbiBjbHVzdGVyaW5nCmQ9MzAKY29uZGl0aW9uX2NvbCA9ICdzeW50aF9sYWJlbHMnCnNhbXBsZV9jb2wgPSAnc3ludGhfc2FtcGxlcycKClhfcmVkX2RpbSA9IHJlZHVjZWREaW0oZW1icnlvX3NjZSwgInBjYS5jb3JyZWN0ZWQiKVssMTpkXQpzY2UuZ3JhcGggPC0gYnVpbGRLTk5HcmFwaCh0KFhfcmVkX2RpbSksIGs9NTApCmxvdXZhaW4uY2x1c3QgPC0gY2x1c3Rlcl9sb3V2YWluKHNjZS5ncmFwaCkKbG91dmFpbi5jbHVzdC5pZHMgPC0gbWVtYmVyc2hpcChsb3V2YWluLmNsdXN0KQoKY29uZGl0aW9uX3ZlYyA8LSBjb2xEYXRhKGVtYnJ5b19zY2UpW1tjb25kaXRpb25fY29sXV0Kc2FtcGxlX2xhYmVscyA8LSBjb2xEYXRhKGVtYnJ5b19zY2UpW1tzYW1wbGVfY29sXV0KY2x1c3QuZGYgPC0gZGF0YS5mcmFtZSgiY2VsbF9pZCI9Y29sbmFtZXMoZW1icnlvX3NjZSksICJMb3V2YWluLkNsdXN0Ij1hcy5jaGFyYWN0ZXIobG91dmFpbi5jbHVzdC5pZHMpKQpjbHVzdC5kZiRTYW1wbGUgPC0gc2FtcGxlX2xhYmVscwpjbHVzdC5kZiRDb25kaXRpb24gPC0gY29uZGl0aW9uX3ZlYwoKcGxvdFVNQVAoZW1icnlvX3NjZSwgY29sb3VyX2J5PSJsb3V2YWluX2NsdXN0IiwgdGV4dF9ieT0ibG91dmFpbl9jbHVzdCIsIHBvaW50X3NpemU9MC4xKQoKIyMgTWFrZSBkZXNpZ24gbWF0cml4CmJhdGNoX2NvbCA9IE5VTEwKZGVzaWduX2RmIDwtIGFzLnRpYmJsZShjb2xEYXRhKGVtYnJ5b19zY2UpW2Moc2FtcGxlX2NvbCwgY29uZGl0aW9uX2NvbCwgYmF0Y2hfY29sKV0pICU+JQogICAgZGlzdGluY3QoKSAlPiUKICAgIGNvbHVtbl90b19yb3duYW1lcyhzYW1wbGVfY29sKQogaWYgKGlzLm51bGwoYmF0Y2hfY29sKSkgewogICAgZGVzaWduIDwtIGZvcm11bGEocGFzdGUoJ34nLCBjb25kaXRpb25fY29sLCBjb2xsYXBzZSA9ICcgJykpICAKICB9IGVsc2UgewogICAgZGVzaWduIDwtIGZvcm11bGEocGFzdGUoJ34nLCBiYXRjaF9jb2wsICIrIiwgY29uZGl0aW9uX2NvbCwgY29sbGFwc2UgPSAnICcpKQogIH0KCmxvdXZhaW4ubW9kZWwgPC0gbW9kZWwubWF0cml4KH4gc3ludGhfbGFiZWxzLCBkYXRhPWRlc2lnbl9kZikKbG91dmFpbi5jb3VudCA8LSBhcy5tYXRyaXgodGFibGUoY2x1c3QuZGYkTG91dmFpbi5DbHVzdCwgY2x1c3QuZGYkU2FtcGxlKSkKCmRmIDwtIGRhdGEuZnJhbWUobG91dmFpbi5jb3VudCkgJT4lCiAgcmVuYW1lKGNsdXN0ZXI9VmFyMSwgc2FtcGxlPVZhcjIpICU+JQogIG11dGF0ZShjbHVzdGVyPWZhY3RvcihjbHVzdGVyKSkgJT4lCiAgbXV0YXRlKHN5bnRoX2xhYmVscz1zdHJfcmVtb3ZlKHNhbXBsZSwgIl8uKyIpKSAlPiUKICBtdXRhdGUoc3ludGhfbGFiZWxzKSAlPiUKICBncm91cF9ieShjbHVzdGVyKSAlPiUKICBkbyhtb2RlbD1nbG0oRnJlcSB+IHN5bnRoX2xhYmVscywgZGF0YT0uLCAgZmFtaWx5PSJwb2lzc29uIikpIAoKcmVzX2RmIDwtIHNhcHBseShkZiRtb2RlbCwgZnVuY3Rpb24oeCkgc3VtbWFyeSh4KSRjb2VmZmljaWVudHNbMixdKSAlPiUKICB0KCkKY29sbmFtZXMocmVzX2RmKSA8LSBjKCJsb2dGQyIsIlN0ZC4gRXJyb3IiLCAieiB2YWx1ZSIsICAgICJQdmFsIiApCmxvdXZhaW4ucmVzIDwtIGNiaW5kKGRmLCByZXNfZGYpICU+JQogIG11dGF0ZShGRFI9cC5hZGp1c3QoUHZhbCwgbWV0aG9kID0gIkJIIikpCnJvd25hbWVzKGxvdXZhaW4ucmVzKSA8LSBsb3V2YWluLnJlcyRjbHVzdGVyCgpjbHVzdC5kZiRsb2dGQyA8LSBsb3V2YWluLnJlc1tjbHVzdC5kZiRMb3V2YWluLkNsdXN0LCAnbG9nRkMnXQpjbHVzdC5kZiRGRFIgPC0gbG91dmFpbi5yZXNbY2x1c3QuZGYkTG91dmFpbi5DbHVzdCwgJ0ZEUiddCgplbWJyeW9fc2NlJGxvdXZhaW5fbG9nRkMgPC0gY2x1c3QuZGYkbG9nRkMKZW1icnlvX3NjZSRsb3V2YWluX2NsdXN0IDwtIGNsdXN0LmRmJExvdXZhaW4uQ2x1c3QKZW1icnlvX3NjZSRsb3V2YWluX0ZEUiA8LSAtbG9nMTAoY2x1c3QuZGYkRkRSKQoKcGxvdChlbWJyeW9fc2NlJGxvdXZhaW5fbG9nRkMsIC1sb2cxMChlbWJyeW9fc2NlJGxvKSkKcGxvdFVNQVAoZW1icnlvX3NjZSwgY29sb3VyX2J5PSJDb25kaXRpb24xX3Byb2IiLCBwb2ludF9zaXplPTAuMSkKcGxvdFVNQVAoZW1icnlvX3NjZSwgY29sb3VyX2J5PSJsb3V2YWluX2xvZ0ZDIiwgdGV4dF9ieT0ibG91dmFpbl9jbHVzdCIsIHBvaW50X3NpemU9MC4xKQoKYGBgCmBgYHtyfQpsb3V2X3JlcyA8LSBydW5fbG91dmFpbihlbWJyeW9fc2NlLCBjb25kaXRpb25fY29sID0gInN5bnRoX2xhYmVscyIsIHNhbXBsZV9jb2w9InN5bnRoX3NhbXBsZXMiLCBrPTUwLCByZWR1Y2VkLmRpbSA9ICJwY2FfYmF0Y2giKQoKZW1icnlvX3NjZSRsb3V2YWluX2xvZ0ZDIDwtIGxvdXZfcmVzJGxvZ0ZDCmVtYnJ5b19zY2UkbG91dmFpbl9jbHVzdCA8LSBsb3V2X3JlcyRMb3V2YWluLkNsdXN0CmVtYnJ5b19zY2UkbG91dmFpbl9GRFIgPC0gLWxvZzEwKGxvdXZfcmVzJEZEUikKCnBsb3QoZW1icnlvX3NjZSRsb3V2YWluX2xvZ0ZDLCBlbWJyeW9fc2NlJGxvdXZhaW5fRkRSKQpwbG90VU1BUChlbWJyeW9fc2NlLCBjb2xvdXJfYnk9IkNvbmRpdGlvbjFfcHJvYiIsIHBvaW50X3NpemU9MC4xKQpwbG90VU1BUChlbWJyeW9fc2NlLCBjb2xvdXJfYnk9ImxvdXZhaW5fbG9nRkMiLCBwb2ludF9zaXplPTAuMSkKcGxvdFVNQVAoZW1icnlvX3NjZSwgY29sb3VyX2J5PSJsb3V2YWluX0ZEUiIsIHRleHRfYnk9ImxvdXZhaW5fY2x1c3QiLCBwb2ludF9zaXplPTAuMSkKYGBgCgoKYGBge3J9CiMgbG91dmFpbi5kZ2UgPC0gREdFTGlzdChjb3VudHM9bG91dmFpbi5jb3VudCwgbGliLnNpemU9bG9nKGNvbFN1bXMobG91dmFpbi5jb3VudCkpKQojIGxvdXZhaW4uZGdlIDwtIGVzdGltYXRlRGlzcChsb3V2YWluLmRnZSwgbG91dmFpbi5tb2RlbCkKIyBsb3V2YWluLmZpdCA8LSBnbG1RTEZpdChsb3V2YWluLmRnZSwgbG91dmFpbi5tb2RlbCwgcm9idXN0PVRSVUUpCiMgbG91dmFpbi5yZXMgPC0gYXMuZGF0YS5mcmFtZSh0b3BUYWdzKGdsbVFMRlRlc3QobG91dmFpbi5maXQsIGNvZWY9bmNvbChsb3V2YWluLm1vZGVsKSksIHNvcnQuYnk9J25vbmUnLCBuPUluZikpCiMgCiMgcGxvdFFMRGlzcChsb3V2YWluLmZpdCwgY2V4ID0gMykKY2x1c3QuZGYkbG9nRkMgPC0gbG91dmFpbi5yZXNbY2x1c3QuZGYkTG91dmFpbi5DbHVzdCwgJ2xvZ0ZDJ10KY2x1c3QuZGYkRkRSIDwtIGxvdXZhaW4ucmVzW2NsdXN0LmRmJExvdXZhaW4uQ2x1c3QsICdGRFInXQoKZW1icnlvX3NjZSRsb3V2YWluX2xvZ0ZDIDwtIGNsdXN0LmRmJGxvZ0ZDCmVtYnJ5b19zY2UkbG91dmFpbl9jbHVzdCA8LSBjbHVzdC5kZiRMb3V2YWluLkNsdXN0CmVtYnJ5b19zY2UkbG91dmFpbl9GRFIgPC0gY2x1c3QuZGYkRkRSCgpsb3V2YWluLnJlcwoKcGxvdChlbWJyeW9fc2NlJGxvdXZhaW5fbG9nRkMsIC1sb2cxMChlbWJyeW9fc2NlJGxvKSkKcGxvdFVNQVAoZW1icnlvX3NjZSwgY29sb3VyX2J5PSJDb25kaXRpb24xX3Byb2IiLCB0ZXh0X2J5PSJsb3V2YWluX2NsdXN0IiwgcG9pbnRfc2l6ZT0wLjEpCnBsb3RVTUFQKGVtYnJ5b19zY2UsIGNvbG91cl9ieT0ibG91dmFpbl9sb2dGQyIsIHRleHRfYnk9ImxvdXZhaW5fY2x1c3QiLCBwb2ludF9zaXplPTAuMSkKYGBgCgoKCjwhLS0gYGBge3J9IC0tPgo8IS0tIGRmX2dsbSA8LSAtLT4KPCEtLSAgIHJlc2hhcGUyOjptZWx0KGxvdXZhaW4uY291bnQsIHZhcm5hbWVzPWMoImNsdXN0ZXIiLCAic2FtcGxlIikpICU+JSAtLT4KPCEtLSAgIG11dGF0ZShjbHVzdGVyPWZhY3RvcihjbHVzdGVyKSkgJT4lIC0tPgo8IS0tICAgbGVmdF9qb2luKGRlc2lnbl9kZiAlPiUgcm93bmFtZXNfdG9fY29sdW1uKCJzYW1wbGUiKSkgJT4lIC0tPgo8IS0tICAgZ3JvdXBfYnkoc2FtcGxlKSAlPiUgLS0+CjwhLS0gICBtdXRhdGUobj1zdW0odmFsdWUpKSAlPiUgLS0+CjwhLS0gICB1bmdyb3VwKCkgJT4lIC0tPgo8IS0tICAgbXV0YXRlKG90aGVyPW4tdmFsdWUpIC0tPgoKPCEtLSBmb3JtdWxhID0gY2JpbmQodmFsdWUsIG90aGVyKSB+IGNsdXN0ZXIqc3ludGhfbGFiZWxzIC0tPgo8IS0tICMgZ2dwbG90KGRmX2dsbVtkZl9nbG0kY2x1c3Rlcj09JzE4JyxdLCBhZXMoeD1zeW50aF9sYWJlbHMsIHk9dmFsdWUpKSArIGdlb21fcG9pbnQoKSAtLT4KPCEtLSBtb2RlbDEgPC0gZ2xtKGZvcm11bGEgPSBmb3JtdWxhLCBmYW1pbHkgPSBiaW5vbWlhbChsaW5rPSJsb2dpdCIpLCBkYXRhID0gZGZfZ2xtKSAtLT4KPCEtLSBzdW1tYXJ5KG1vZGVsMSkgLS0+CjwhLS0gYGBgIC0tPgoKIyMjIE1pbG8KClBpY2sgSyB1c2luZyB3aXRoaW4vYmV0d2VlbiBjbHVzdGVyIGRpc3RhbmNlCmBgYHtyfQpuaG9vZFJhdGlvIDwtIGZ1bmN0aW9uKHgsIGQ9NTAsICByZWR1Y2VkLmRpbT0iUENBIiwgLi4uKXsKICByZXF1aXJlKEJpb2NOZWlnaGJvcnMpCiAgIyBjYWxjdWF0ZSB0aGUgcmF0aW8gb2Ygd2l0aGluLW5ob29kIGRpc3RhbmNlcyAoZGlzdGFuY2UgZnJvbSBpbmRleCB0byBrdGggY2VsbCkKICAjIHRvIHRoZSBiZXR3ZWVuIG5ob29kLWRpc3RhbmNlIChkaXN0YW5jZSB0byBuZWFyZXN0IG90aGVyIGluZGV4IGNlbGwpCiAgaWYobGVuZ3RoKG5ob29kSW5kZXgoeCkpID4gMCl7CiAgICAjIGdldCB0aGUgbWF4aW11bSBkaXN0YW5jZSBpbiBlYWNoIG5ob29kCiAgICB3aXRoaW4uZGlzdCA8LSBzYXBwbHkodW5saXN0KG5ob29kSW5kZXgoeCkpLCBGVU49ZnVuY3Rpb24oWCkgbWF4KG5ob29kRGlzdGFuY2VzKHgpW1twYXN0ZTAoWCldXSkpCiAgICAjIGZpbmQgdGhlIDFOTiBiZXR3ZWVuIG5ob29kSW5kZXggY2VsbHMKICAgIGJldHdlZW4uZGlzdCA8LSBmaW5kS05OKHJlZHVjZWREaW0oeFssIHVubGlzdChuaG9vZEluZGV4KHgpKV0sIHJlZHVjZWQuZGltKVssIGMoMTpkKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrPTEpJGRpc3RhbmNlCiAgICBkaXN0LnJhdGlvIDwtIHdpdGhpbi5kaXN0L2JldHdlZW4uZGlzdAogICAgcmV0dXJuKGRpc3QucmF0aW8pCiAgfSBlbHNlewogICAgc3RvcCgiQ29tcHV0ZSBuaG9vZHMgZmlyc3QiKQogIH0KICAKfQoKY2FsY19uaG9vZF9yYXRpbyA8LSBmdW5jdGlvbihtaWxvLCBrPTUwLGQ9MzAsIHByb3A9MC4xLCByZWR1Y2VkLmRpbT0icGNhLmNvcnJlY3RlZCIpewogIG1pbG8gPC0gYnVpbGRHcmFwaChtaWxvLCBrPWssIGQ9ZCwgcmVkdWNlZC5kaW0gPSByZWR1Y2VkLmRpbSkKICBtaWxvIDwtIG1ha2VOaG9vZHMobWlsbywgcHJvcCA9IHByb3AsIGs9aywgZD1kLCByZWR1Y2VkX2RpbXMgPSByZWR1Y2VkLmRpbSkKICBkLnJhdGlvIDwtIG5ob29kUmF0aW8obWlsbywgZD0zMCkKICBkLnJhdGlvCiAgfQoKbWlsbyA8LSBNaWxvKGVtYnJ5b19zY2UpCm1pbG8gPC0gYnVpbGRHcmFwaChtaWxvLCBrPTUwLCBkPTMwLCByZWR1Y2VkLmRpbSA9ICJwY2EuY29ycmVjdGVkIikKbWlsbyA8LSBtYWtlTmhvb2RzKG1pbG8sIHByb3AgPSAwLjEsIGs9NTAsIGQ9MzAsIHJlZHVjZWRfZGltcyA9ICJwY2EuY29ycmVjdGVkIikKbWlsbyA8LSBjYWxjTmhvb2REaXN0YW5jZShtaWxvLCBkPTMwLCByZWR1Y2VkLmRpbSA9ICJwY2EuY29ycmVjdGVkIikKClhfcGNhIDwtIHJlZHVjZWREaW0obWlsbywgInBjYS5jb3JyZWN0ZWQiKVssMTpkXQoKWF9wY2FfaXhzIDwtIFhfcGNhW3VubGlzdChuaG9vZEluZGV4KG1pbG8pKSxdClhfcGNhX2NlbGxzIDwtIFhfcGNhW3Jvd1N1bXMobmhvb2RzKG1pbG8pKT4wLF0KCm5ob29kc19tYXQgPC0gbmhvb2RzKG1pbG8pCmFzLm1hdHJpeChuaG9vZHNfbWF0WzE6MzAwMCwgMToxMDBdKSAlKiUgWF9wY2FfaXhzWzE6MTAwLF0KCgoKWF9wY2Fbbmhvb2RzKG1pbG8pWzEsXT09MSxdCgpkLnJhdGlvcyA8LSBzYXBwbHkoc2VxKDEwLDUwLCBieT01KSwgZnVuY3Rpb24oaykgY2FsY19uaG9vZF9yYXRpbyhtaWxvLCBrPWspKQpgYGAKCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD04fQptaWxvX291dCA8LSBydW5fbWlsbyhlbWJyeW9fc2NlLCBjb25kaXRpb25fY29sPSJzeW50aF9sYWJlbHMiLCBzYW1wbGVfY29sPSJzeW50aF9zYW1wbGVzIiwgcmVkdWNlZC5kaW09InBjYS5jb3JyZWN0ZWQiLAogICAgICAgICBrPTUwLCBwcm9wPTAuMSkKCm1pbG9fb3V0JE1pbG8gPC0gYnVpbGROaG9vZEdyYXBoKG1pbG9fb3V0JE1pbG8pCmVtYnJ5b19zY2UkbWlsb19yZXMgPC0gbWlsbzJvdXRwdXQobWlsb19vdXQkTWlsbywgbWlsb19vdXQkREFyZXMsIG91dF90eXBlID0gImxhYmVscyIpCnRydWVfbGFiZWxzIDwtIGlmZWxzZShlbWJyeW9fc2NlJENvbmRpdGlvbjJfcHJvYiA8IDAuNCwgIk5lZ0xGQyIsIGlmZWxzZShlbWJyeW9fc2NlJENvbmRpdGlvbjJfcHJvYiA+IDAuNiwgIlBvc0xGQyIsICJOb3REQSIpKQpjb2xEYXRhKGVtYnJ5b19zY2UpW1sidHJ1ZV9sYWJlbHMiXV0gPC0gdHJ1ZV9sYWJlbHMKCnBsb3RSZWR1Y2VkRGltKGVtYnJ5b19zY2UsIGRpbXJlZD0iVU1BUCIsIGNvbG91cl9ieT0ibWlsb19yZXMiLCBwb2ludF9zaXplPTAuMikgCnBsb3RSZWR1Y2VkRGltKGVtYnJ5b19zY2UsIGRpbXJlZD0iVU1BUCIsIGNvbG91cl9ieT0iQ29uZGl0aW9uMl9wcm9iIiwgcG9pbnRfc2l6ZT0wLjIpIApwbG90UmVkdWNlZERpbShlbWJyeW9fc2NlLCBkaW1yZWQ9IlVNQVAiLCBjb2xvdXJfYnk9InRydWVfbGFiZWxzIiwgcG9pbnRfc2l6ZT0wLjIpIApgYGAKCkNvbXBhcmUgd2l0aCBNRUxECgpgYGB7ciwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9OH0KbWVsZF9vdXQgPC0gcnVuX21lbGRfcmV0aWN1bGF0ZShlbWJyeW9fc2NlLCBjb25kaXRpb25fY29sPSJzeW50aF9sYWJlbHMiLCBzYW1wbGVfY29sPSJzeW50aF9zYW1wbGVzIiwgcmVkdWNlZC5kaW09InBjYS5jb3JyZWN0ZWQiLAogICAgICAgICBrPTUwKQoKZW1icnlvX3NjZSRtZWxkX3JlcyA8LSBtZWxkMm91dHB1dChtZWxkX291dCwgb3V0X3R5cGUgPSAibGFiZWxzIikKCnBsb3RSZWR1Y2VkRGltKGVtYnJ5b19zY2UsIGRpbXJlZD0iVU1BUCIsIGNvbG91cl9ieT0ibWVsZF9yZXMiLCBwb2ludF9zaXplPTAuMikgCnBsb3RSZWR1Y2VkRGltKGVtYnJ5b19zY2UsIGRpbXJlZD0iVU1BUCIsIGNvbG91cl9ieT0idHJ1ZV9sYWJlbHMiLCBwb2ludF9zaXplPTAuMikgCmBgYAoKPCEtLSBEb2VzIHRoZSBwcm9wL2sgbmVlZCB0byByZWFjaCBzYXR1cmF0aW9uPyAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIG1pbG9fbHMgPC0gbGFwcGx5KHNlcSgyMCw1MCwgYnkgPSAxMCksIGZ1bmN0aW9uKGspeyAtLT4KPCEtLSAgIG0gPC0gYnVpbGRHcmFwaChNaWxvKGVtYnJ5b19zY2UpLCBrPWssIGQ9MzAsIHJlZHVjZWQuZGltID0gJ3BjYS5jb3JyZWN0ZWQnKSAgLS0+CjwhLS0gICBtIDwtICBtYWtlTmhvb2RzKG0sIHByb3AgPSAwLjEsIGs9aywgZD0zMCwgcmVkdWNlZF9kaW1zID0gJ3BjYS5jb3JyZWN0ZWQnKSAgLS0+CjwhLS0gICBtIC0tPgo8IS0tICAgfSkgLS0+Cgo8IS0tIG5hbWVzKG1pbG9fbHMpIDwtIHNlcSgyMCw1MCwgYnkgPSAxMCkgLS0+CjwhLS0gaW1hcChtaWxvX2xzLCB+IGRhdGEuZnJhbWUoIG5fbmhvb2RzID0gcm93U3VtcygueEBuaG9vZHMpLCBrPS55KSApICU+JSAtLT4KPCEtLSAgIHB1cnJyOjpyZWR1Y2UoYmluZF9yb3dzKSAlPiUgLS0+CjwhLS0gICBnZ3Bsb3QoYWVzKGZpbGw9aywgbl9uaG9vZHMpKSArIGdlb21faGlzdG9ncmFtKGJpbnM9NTAsIHBvc2l0aW9uPSJpZGVudGl0eSIpIC0tPgoKPCEtLSBgYGAgLS0+CgpgYGB7cn0KIyMgTWFrZSBkZXNpZ24gbWF0cml4CnNhbXBsZV9jb2wgPSAic3ludGhfc2FtcGxlcyIKY29uZGl0aW9uX2NvbCA9ICJzeW50aF9sYWJlbHMiCmJhdGNoX2NvbCA9IE5VTEwKZGVzaWduX2RmIDwtIGFzLnRpYmJsZShjb2xEYXRhKGVtYnJ5b19zY2UpW2Moc2FtcGxlX2NvbCwgY29uZGl0aW9uX2NvbCwgYmF0Y2hfY29sKV0pICU+JQogICAgZGlzdGluY3QoKSAlPiUKICAgIGNvbHVtbl90b19yb3duYW1lcyhzYW1wbGVfY29sKQogIGlmIChpcy5udWxsKGJhdGNoX2NvbCkpIHsKICAgIGRlc2lnbiA8LSBmb3JtdWxhKHBhc3RlKCd+JywgY29uZGl0aW9uX2NvbCwgY29sbGFwc2UgPSAnICcpKSAgCiAgfSBlbHNlIHsKICAgIGRlc2lnbiA8LSBmb3JtdWxhKHBhc3RlKCd+JywgYmF0Y2hfY29sLCAiKyIsIGNvbmRpdGlvbl9jb2wsIGNvbGxhcHNlID0gJyAnKSkKICB9CgptaWxvX2xzIDwtIGxhcHBseShtaWxvX2xzLCBmdW5jdGlvbihtKXsKICAjIyBUZXN0IERBCiAgbSA8LSBjb3VudENlbGxzKG0sIG1ldGEuZGF0YSA9IGRhdGEuZnJhbWUoY29sRGF0YShtKSksIHNhbXBsZT0nc3ludGhfc2FtcGxlcycpCiAgbSA8LSBjYWxjTmhvb2REaXN0YW5jZShtLCBkPTMwLCByZWR1Y2VkLmRpbSA9ICJwY2EuY29ycmVjdGVkIikKICBEQV9yZXN1bHRzIDwtIHRlc3ROaG9vZHMobSwgZGVzaWduID0gZGVzaWduLCBkZXNpZ24uZGYgPSBkZXNpZ25fZGYpCiAgcmV0dXJuKGxpc3QoTWlsbz1tLCBkYV9yZXM9REFfcmVzdWx0cykpCn0pCgptaWxvX291dGNvbWUgPC0gbGFwcGx5KHNlcV9hbG9uZyhtaWxvX2xzKSwgZnVuY3Rpb24oaSkgCiAgZGF0YS5mcmFtZShwcmVkPW1pbG8yb3V0cHV0KG1pbG9fbHNbW2ldXSRNaWxvLCBtaWxvX2xzW1tpXV0kZGFfcmVzLCBvdXRfdHlwZT0ibGFiZWxzIiksIAogICAgICAgICAgICAgdHJ1ZT1taWxvX2xzJGAyMGAkTWlsbyR0cnVlX2xhYmVscywKICAgICAgICAgICAgIG1ldGhvZD1uYW1lcyhtaWxvX2xzKVtpXSkKICApICU+JQogIHB1cnJyOjpyZWR1Y2UoYmluZF9yb3dzKSAlPiUKICBjYWxjdWxhdGVfb3V0Y29tZSgpCgptaWxvX291dGNvbWUgJT4lCiAgZ2dwbG90KGFlcyhtZXRob2QsIFBvd2VyKSkgKyBnZW9tX3BvaW50KCkKCm1pbG9fb3V0Y29tZSAlPiUKICBnZ3Bsb3QoYWVzKG1ldGhvZCwgVFBSKSkgKyBnZW9tX3BvaW50KCkKCmBgYAoKCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD04fQptaWxvX291dDIgPC0gcnVuX21pbG8oZW1icnlvX3NjZSwgY29uZGl0aW9uX2NvbD0ic3ludGhfbGFiZWxzIiwgc2FtcGxlX2NvbD0ic3ludGhfc2FtcGxlcyIsIHJlZHVjZWQuZGltPSJwY2EuY29ycmVjdGVkIiwKICAgICAgICAgaz0zMCwgcHJvcD0wLjEpCgptaWxvX291dDIkTWlsbyA8LSBidWlsZE5ob29kR3JhcGgobWlsb19vdXQyJE1pbG8pCgpoaXN0KHJvd1N1bXMobWlsb19vdXQyJE1pbG9Abmhvb2RzKSwgYnJlYWtzPTEwMCkKCm1pbG9fb3V0MiREQXJlcyAlPiUKICBnZ3Bsb3QoYWVzKGxvZ0ZDLCAtIGxvZzEwKFNwYXRpYWxGRFIpKSkgKyBnZW9tX3BvaW50KCkKcGxvdE5ob29kU2l6ZUhpc3QobWlsb19vdXQyJE1pbG8pIC8gCiAgcGxvdE5ob29kR3JhcGhEQShtaWxvX291dDIkTWlsbywgbWlsb19vdXQyJERBcmVzKQpgYGAKCiMjIyBNRUxECgpgYGB7cn0KbWVsZF9yZXNfbHMgPC0gbGFwcGx5KHNlcSgyMCw1MCwgYnkgPSAxMCksIGZ1bmN0aW9uKGspewogIG1lbGRfcmVzIDwtIHJ1bl9tZWxkX3JldGljdWxhdGUoZW1icnlvX3NjZSwgY29uZGl0aW9uX2NvbD0ic3ludGhfbGFiZWxzIiwgc2FtcGxlX2NvbD0ic3ludGhfc2FtcGxlcyIsIHJlZHVjZWQuZGltID0gInBjYS5jb3JyZWN0ZWQiLCBkPTMwLCBrPWspCiAgbWVsZF9vdXQgPC0gbWVsZDJvdXRwdXQobWVsZF9yZXMsIG91dF90eXBlID0gImxhYmVscyIpCiAgbWVsZF9vdXQKfSkKCmxhcHBseShtZWxkX3Jlc19scykKCiMgbWVsZF9vdXRjb21lIDwtIAogIGxhcHBseShzZXFfYWxvbmcobWVsZF9yZXNfbHMpLCBmdW5jdGlvbihpKSAKICBkYXRhLmZyYW1lKHByZWQ9bWVsZF9yZXNfbHNbW2ldXSwgCiAgICAgICAgICAgICB0cnVlPWVtYnJ5b19zY2UkdHJ1ZV9sYWJlbHMsCiAgICAgICAgICAgICBtZXRob2Q9c2VxKDIwLDUwLCBieSA9IDEwKVtpXSkKICApICU+JQogICAgcHVycnI6OnJlZHVjZShiaW5kX3Jvd3MpICU+JQogICAgbXV0YXRlKHByZWQ9YXMuY2hhcmFjdGVyKHByZWQpKSAlPiUKICAgIG11dGF0ZShwcmVkPWNhc2Vfd2hlbihwcmVkPT0iUG9zTEZDIiB+ICJOZWdMRkMiLAogICAgICAgICAgICAgICAgICAgICAgICBwcmVkPT0iTmVnTEZDIiB+ICJQb3NMRkMiLAogICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gcHJlZCkpICU+JQogICAgbXV0YXRlKG91dGNvbWU9Y2FzZV93aGVuKHRydWU9PXByZWQgJiBwcmVkIT0iTm90REEiIH4gJ1RQJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlIT1wcmVkICYgcHJlZCE9Ik5vdERBIiB+ICdGUCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSE9cHJlZCAmIHByZWQ9PSJOb3REQSIgfiAnRk4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWU9PXByZWQgJiBwcmVkPT0iTm90REEiICB+ICJUTiIKICAgICkpICU+JQogICAgZ3JvdXBfYnkobWV0aG9kLCBvdXRjb21lKSAlPiUKICAgIHN1bW1hcmlzZShuPW4oKSkgJT4lCiAgICBwaXZvdF93aWRlcihpZF9jb2xzPW1ldGhvZCwgbmFtZXNfZnJvbT1vdXRjb21lLCB2YWx1ZXNfZnJvbT1uLCB2YWx1ZXNfZmlsbD0wKSAlPiUKICAgIG11dGF0ZShUUFI9VFAvKFRQK0ZQKSwgRlBSPUZQLyhUUCtGUCksIFROUj1UTi8oVE4rRk4pLCBGTlIgPSBGTi8oRk4rVFApLAogICAgICAgICAgIFBvd2VyID0gMSAtIEZOUiwKICAgICAgICAgICBBY2N1cmFjeSA9IChUUCArIFROKS8oVFAgKyBUTiArIEZQICsgRk4pLAogICAgICAgICAgIFJlY2FsbCA9IFRQIC8gKFRQK0ZOKQogICAgKQpgYGAKCmBgYHtyfQpzY2UgPC0gZW1icnlvX3NjZVssMTo1MDAwXQoKZGFzZXFfcmVzIDwtIHJ1bl9kYXNlcShzY2UsIGNvbmRpdGlvbl9jb2w9InN5bnRoX2xhYmVscyIsIGsudmVjID0gYygxMCwyMCwzMCkpCgpoaXN0KGRhc2VxX3JlcyRkYS5yYXRpbykKYGBgCgoKIyMgKyBCYXRjaCBlZmZlY3QgCih0aGUgZm9sbG93aW5nIGNvZGUgaXMgd3JhcHBlZCBpbiB0aGUgYHJ1bl9iYXRjaF9iZW5jaG1hcmsuUmAgc2NyaXB0IGJ1dCBJIGFtIHJlcnVubmluZyBmb3Igdml6KQoKVmlzdWFsaXplIGJhdGNoIGVmZmVjdHMgb2YgZGlmZmVyZW50IGludGVuc2l0eQoKYGBge3IsIGZpZy53aWR0aD05LCBmaWcuaGVpZ2h0PTh9CmVtYnJ5b19zY2UgPC0gcmVhZFJEUygiL25mcy90ZWFtMjA1L2VkNi9kYXRhL21pbG9fYmVuY2htYXJrL2VtYnJ5b19kYXRhX2JtLlJEUyIpCgpzZWVkPTIwMjQKZW1icnlvX3NjZSA8LSBhZGRfc3ludGhldGljX2xhYmVscyhlbWJyeW9fc2NlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBvbmVudHMgPSAxMCwgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZERpbT0ncGNhLmNvcnJlY3RlZCcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWQ9c2VlZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9yZXBsaWNhdGVzID0gMykKdHJ1ZV9sYWJlbHMgPC0gaWZlbHNlKGVtYnJ5b19zY2UkQ29uZGl0aW9uMl9wcm9iIDwgMC40LCAiTmVnTEZDIiwgaWZlbHNlKGVtYnJ5b19zY2UkQ29uZGl0aW9uMl9wcm9iID4gMC42LCAiUG9zTEZDIiwgIk5vdERBIikpCmNvbERhdGEoZW1icnlvX3NjZSlbWyJ0cnVlX2xhYmVscyJdXSA8LSB0cnVlX2xhYmVscwoKIyMgU2ltdWxhdGUgYmF0Y2ggZWZmZWN0cyBvZiBkaWZmZXJlbnQgbWFnbml0dWRlCmJtX3NjZV9scyA8LSBsYXBwbHkoYygwLCAwLjI1LCAwLjc1LCAxKSwgZnVuY3Rpb24oc2QpewogIHNjZV9iZSA8LSBhZGRfYmF0Y2hfZWZmZWN0KGVtYnJ5b19zY2UsIG5vcm1fc2Q9c2QsIGJhdGNoX2NvbCA9ICJzeW50aF9iYXRjaGVzIikKICBzY2VfYmUkbm9ybV9zZCA8LSBzZAogIHNjZV9iZQogIH0pCgpibV9zY2VfbHMgPC0gbGFwcGx5KGJtX3NjZV9scywgZnVuY3Rpb24oeCkgcnVuVU1BUCh4LCBkaW1yZWQ9InBjYV9iYXRjaCIsIG5hbWUgPSAndW1hcF9iYXRjaCcsIG5fZGltcmVkPTE6MzApKQoKd3JhcF9wbG90cyhsYXBwbHkoYm1fc2NlX2xzLCBmdW5jdGlvbih4KSBwbG90UmVkdWNlZERpbSh4LCBkaW1yZWQ9InVtYXBfYmF0Y2giLCBjb2xvdXJfYnk9InN5bnRoX2JhdGNoZXMiLCBwb2ludF9zaXplPTAuMikgKyAKICAgICAgICAgZ2d0aXRsZShwYXN0ZTAoIkJhdGNoIGVmZmVjdCBTRCA9ICIsIHgkbm9ybV9zZFsxXSkpKSkgKwogIHBsb3RfbGF5b3V0KG5jb2w9MiwgbnJvdz0yLCBndWlkZXM9ImNvbGxlY3QiKSAmCiAgZ3VpZGVzKGNvbG9yPWd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXM9bGlzdChzaXplPTIpKSkKYGBgCgpgYGB7cn0KbGFwcGx5KGJtX3NjZV9scywgZnVuY3Rpb24oeCkgcGxvdFJlZHVjZWREaW0oeCwgZGltcmVkPSJ1bWFwX2JhdGNoIiwgY29sb3VyX2J5PSJ0cnVlX2xhYmVscyIsIHBvaW50X3NpemU9MC4yKSArIAogICAgICAgICBnZ3RpdGxlKHBhc3RlMCgiQmF0Y2ggZWZmZWN0IFNEID0gIiwgeCRub3JtX3NkWzFdKSkpCmBgYAoKCgojIyMgTG9hZCByZXN1bHRzIGZyb20gYHJ1bl9iYXRjaF9iZW5jaG1hcmsuUmAKCmBgYHtyfQoub3V0Y29tZV9ieV9wcm9iIDwtIGZ1bmN0aW9uKGJlbmNobWFya19kZiwgZGFfdXBwZXIpewogIERBX3RocmVzaCA8LSAxIC0gZGFfdXBwZXIKICBiZW5jaG1hcmtfZGYgPC0gYmVuY2htYXJrX2RmICU+JQogIG11dGF0ZSh0cnVlID0gaWZlbHNlKHRydWVfcHJvYiA8IERBX3RocmVzaCwgIk5lZ0xGQyIsICJOb3REQSIpKSAKICBpZiAoYmVuY2htYXJrX2RmJG1ldGhvZFsxXT09Im1lbGQiKSB7CiAgICBiZW5jaG1hcmtfZGYgPC0gbXV0YXRlKGJlbmNobWFya19kZiwgcHJlZCA9IGlmZWxzZShDb25kaXRpb24yIDwgREFfdGhyZXNoLCAiTmVnTEZDIiwgIk5vdERBIikpIAogIH0KICAjIyBDaGVjayBpZiBjb25kaXRpb25zIHdlcmUgc3dhcHBlZCBpbiB0ZXN0CiAgcHJlZF9jb3IgPC0gYmVuY2htYXJrX2RmICU+JQogICAgbXV0YXRlKHByZWQ9ZmFjdG9yKHByZWQsIGxldmVscz1jKCJOZWdMRkMiLCAiTm90REEiLCAiUG9zTEZDIiksIG9yZGVyZWQgPSBUUlVFKSkgJT4lCiAgICBtdXRhdGUocHJlZD1hcy5udW1lcmljKHByZWQpKSAlPiUKICAgIHN1bW1hcmlzZShjb3IocHJlZCwgdHJ1ZV9wcm9iKSkKICAjIyBTd2FwIG91dGNvbWVzIGlmIHNvCiAgaWYgKCFpcy5uYShwcmVkX2NvcikpIHsKICAgIGlmIChwcmVkX2NvciA8IDApIHsKICAgICAgYmVuY2htYXJrX2RmIDwtIG11dGF0ZShiZW5jaG1hcmtfZGYsIHByZWQgPSBpZmVsc2UocHJlZD09Ik5lZ0xGQyIsICJQb3NMRkMiLCBpZmVsc2UocHJlZD09IlBvc0xGQyIsICJOZWdMRkMiLCAiTm90REEiKSkpCiAgICAgICAgfQogICAgfQogIAogIGNhbGN1bGF0ZV9vdXRjb21lKGJlbmNobWFya19kZikKfQoKcGxvdF9wcm9iX291dGNvbWUgPC0gZnVuY3Rpb24ob3V0X3Byb2JfZGYsIG1ldHJpYz0nVFBSJyl7CiAgb3V0X3Byb2JfZGYgJT4lCiAgbXV0YXRlKEZEUiA9IEZQLyhUUCtGUCkpICU+JQogIG11dGF0ZShUUFI9aWZlbHNlKGlzLm5hbihUUFIpLCAwLCBUUFIpLAogICAgICAgICBGUFI9aWZlbHNlKGlzLm5hbihGUFIpLCAwLCBGUFIpLAogICAgICAgICAgICAgICAgICBGRFI9aWZlbHNlKGlzLm5hbihGRFIpLCAwLCBGRFIpLAogICAgICAgICBQcmVjaXNpb249aWZlbHNlKGlzLm5hbihQcmVjaXNpb24pLCAwLCBQcmVjaXNpb24pKSAlPiUKICByZW5hbWUobWV0cmljPW1ldHJpYykgJT4lCiAgZ3JvdXBfYnkobWV0aG9kLCBEQV90aHJlc2gsIGJhdGNoRWZmZWN0LCBlbnIpICU+JQogIHN1bW1hcmlzZShtZWFuX21ldHJpYz1tZWFuKG1ldHJpYyksIAogICAgICAgICAgICBzZF9tZXRyaWM9c2QobWV0cmljKSkgJT4lCiAgZ2dwbG90KGFlcyhEQV90aHJlc2gsIG1lYW5fbWV0cmljLCBjb2xvcj1tZXRob2QpKSArCiAgZ2VvbV9wb2ludChzaXplPTEsIGFscGhhPTAuNykgKwogIGdlb21fcmliYm9uKGFlcyh5bWluPW1lYW5fbWV0cmljLXNkX21ldHJpYywgeW1heD1tZWFuX21ldHJpYytzZF9tZXRyaWMsIGZpbGw9bWV0aG9kKSwgYWxwaGE9MC4yLCBjb2xvcj1OQSkgKwogIGdlb21fbGluZSgpICsKICBmYWNldF9ncmlkKGJhdGNoRWZmZWN0fmVuciwgbGFiZWxsZXI9ImxhYmVsX2JvdGgiKSArCiAgeGxhYigicHJvYmFiaWxpdHkgdGhyZXNob2xkIikgKwogICAgeWxhYihwYXN0ZSgibWVhbiIsIG1ldHJpYykpICsKICB4bGltKDAuNSwwLjkpICsKICAgIHRoZW1lX2J3KGJhc2Vfc2l6ZT0xNikKICAKfQoKIyMgTWV0aG9kIGNvbG9yIHBhbGV0dGUKbWV0aG9kX25hbWVzIDwtIGMoIm1pbG8iLCAiZGFzZXEiLCAibWVsZCIsICJsb3V2YWluIiwgIm1pbG9fYmF0Y2giLCAibG91dmFpbl9iYXRjaCIpCm1ldGhvZF9jb2xvcnMgPC0gUkNvbG9yQnJld2VyOjpicmV3ZXIucGFsKGxlbmd0aChtZXRob2RfbmFtZXMpLCBuYW1lPSJEYXJrMiIpCm1ldGhvZF9jb2xvcnMgPC0gc2V0TmFtZXMobWV0aG9kX2NvbG9ycywgbWV0aG9kX25hbWVzKQptZXRob2RfbGFiZWxzIDwtIGMoIk1pbG8iLCAiREFzZXEiLCAiTUVMRCIsICJMb3V2YWluIiwgIk1pbG8gKH4gYmF0Y2ggKyBjb25kaXRpb24pIiwgJ0xvdXZhaW4gKH4gYmF0Y2ggKyBjb25kaXRpb24pJykKCm91dGRpciA8LSAiL25mcy90ZWFtMjA1L2VkNi9kYXRhL21pbG9fYmVuY2htYXJrLyIKcmVzX2ZpbGVzIDwtIGxpc3QuZmlsZXMob3V0ZGlyLCBwYXR0ZXJuPSIuREFyZXN1bHRzLisuY3N2IikKcmVzX2ZpbGVzX2Z1bGwgPC0gbGlzdC5maWxlcyhvdXRkaXIsIHBhdHRlcm49Ii5EQXJlc3VsdHMuKy5jc3YiLCBmdWxsLm5hbWVzID0gVFJVRSkKaW5fZmlsZXMgPC0gbGlzdC5maWxlcygifi9kYXRhL21pbG9fYmVuY2htYXJrL3N5bnRoZXRpY19kYXRhLyIsIHBhdHRlcm49ImNvbGRhdGEuY3N2IikKCiMjIE1ha2UgZGF0YSBmcmFtZSB3IGJlbmNobWFyayBwYXJhbWV0ZXJzCm91dF9tZXRhX2RmIDwtIGRhdGEuZnJhbWUoZmlsZV9pZCA9IHN0cl9yZW1vdmVfYWxsKHJlc19maWxlcywgImJlbmNobWFya19lbWJyeW9fcG9wX3wuY3N2IikpICU+JQogIHNlcGFyYXRlKGNvbCA9IGZpbGVfaWQsIHNlcCA9ICIuREFyZXN1bHRzLiIsIGludG89YygiZmlsZV9pZCIsICJtZXRob2QiKSkgJT4lCiAgc2VwYXJhdGUoY29sID0gZmlsZV9pZCwgc2VwID0gIl9lbnIiLCBpbnRvPWMoInBvcCIsICJmaWxlX2lkIikpICU+JQogIHNlcGFyYXRlKGNvbCA9IGZpbGVfaWQsIHNlcCA9ICJfIiwgaW50bz1jKCJlbnIiLCAic2VlZCIsICJiYXRjaEVmZmVjdCIpKSAlPiUKICAjIG11dGF0ZShNTk5jb3JyZWN0ZWQ9aWZlbHNlKCdNTk5jb3JyZWN0ZWQnICVpbiUgYmF0Y2hFZmZlY3QsIFRSVUUsIEZBTFNFKSkgJT4lCiAgbXV0YXRlKHNlZWQ9c3RyX3JlbW92ZShzZWVkLCAic2VlZCIpLCBiYXRjaEVmZmVjdD1zdHJfcmVtb3ZlX2FsbChiYXRjaEVmZmVjdCwgImJhdGNoRWZmZWN0fC5NTk5jb3JyZWN0ZWQiKSkgCgpvdXRfbWV0YV9kZiAlPiUKICBmaWx0ZXIobWV0aG9kPT0ibG91dmFpbl9iYXRjaCIgJiBNTk5jb3JyZWN0ZWQpICU+JQogIGdncGxvdChhZXMocG9wLCBmaWxsPWJhdGNoRWZmZWN0KSkgKyBnZW9tX2JhcigpICsgY29vcmRfZmxpcCgpCmBgYAoKCmBgYHtyLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQojIyBSZWFkIERBIHByZWRpY3Rpb25zCnByb2JfdGhyZXNoX3ZlYyA8LSBzZXEoMC41LCAwLjksIDAuMDUpCgpvdXRjb21lX2RmIDwtIGxhcHBseShzZXFfYWxvbmcocmVzX2ZpbGVzX2Z1bGwpLCBmdW5jdGlvbihpKXsgCiAgcHJpbnQocGFzdGUoIk91dGNvbWUgbm8uICIsIGkpKQogIGJlbmNobWFya19kZiA8LSByZWFkX2NzdihyZXNfZmlsZXNfZnVsbFtpXSkKICBwb3BfZW5yIDwtIGFzLm51bWVyaWMob3V0X21ldGFfZGZbaSwiZW5yIl0pCiAgbGFwcGx5KHByb2JfdGhyZXNoX3ZlY1twcm9iX3RocmVzaF92ZWMgPCBwb3BfZW5yXSwgZnVuY3Rpb24oeCl7CiAgICBiZW5jaG1hcmtfZGYgJT4lCiAgICAgIC5vdXRjb21lX2J5X3Byb2IoZGFfdXBwZXIgPSB4KSAlPiUKICAgICAgbXV0YXRlKERBX3RocmVzaD14KSAlPiUKICAgICAgdW5ncm91cCgpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KC0gbWV0aG9kKSAlPiUKICAgICAgYmluZF9jb2xzKG91dF9tZXRhX2RmW2ksXSkgJT4lCiAgICAgIGZpbHRlcihEQV90aHJlc2ggPCBhcy5udW1lcmljKGVucikpCiAgICB9KSAlPiUKICAgIHB1cnJyOjpyZWR1Y2UoYmluZF9yb3dzKQogIH0pICU+JQogIHB1cnJyOjpyZWR1Y2UoYmluZF9yb3dzKQoKd3JpdGVfY3N2KG91dGNvbWVfZGYsICIvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvb3V0Y29tZV9mdWxsLmNzdiIpCmBgYAoKYGBge3J9Cm91dGNvbWVfZGYgPC0gcmVhZF9jc3YoIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay9vdXRjb21lX2Z1bGwuY3N2IikKYGBgCgpNb3RpdmF0ZSB0aHJlc2hvbGQKYGBge3IsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD00fQptZXRyaWM9IlRQUiIKcGxfdGhyXzEgPC0gb3V0Y29tZV9kZiAlPiUKICBmaWx0ZXIoYmF0Y2hFZmZlY3Q9PTAgJiBtZXRob2QhPSJtaWxvX2JhdGNoIikgJT4lCiAgbXV0YXRlKEZEUiA9IEZQLyhUUCtGUCkpICU+JQogIG11dGF0ZShUUFI9aWZlbHNlKGlzLm5hbihUUFIpLCAwLCBUUFIpLAogICAgICAgICBGUFI9aWZlbHNlKGlzLm5hbihGUFIpLCAwLCBGUFIpLAogICAgICAgICAgICAgICAgICBGRFI9aWZlbHNlKGlzLm5hbihGRFIpLCAwLCBGRFIpLAogICAgICAgICBQcmVjaXNpb249aWZlbHNlKGlzLm5hbihQcmVjaXNpb24pLCAwLCBQcmVjaXNpb24pKSAlPiUKICByZW5hbWUobWV0cmljPW1ldHJpYykgJT4lCiAgZ3JvdXBfYnkobWV0aG9kLCBEQV90aHJlc2gsIGJhdGNoRWZmZWN0KSAlPiUKICBzdW1tYXJpc2UobWVhbl9tZXRyaWM9bWVhbihtZXRyaWMpLCAKICAgICAgICAgICAgc2RfbWV0cmljPXNkKG1ldHJpYykpICU+JQogIGdncGxvdChhZXMoREFfdGhyZXNoLCBtZWFuX21ldHJpYywgY29sb3I9bWV0aG9kKSkgKwogIGdlb21fcG9pbnQoc2l6ZT0yLCBhbHBoYT0wLjcpICsKICBnZW9tX3JpYmJvbihhZXMoeW1pbj1tZWFuX21ldHJpYy1zZF9tZXRyaWMsIHltYXg9bWVhbl9tZXRyaWMrc2RfbWV0cmljLCBmaWxsPW1ldGhvZCksIGFscGhhPTAuMiwgY29sb3I9TkEpICsKICBnZW9tX2xpbmUoKSArCiAgZ2VvbV92bGluZShsaW5ldHlwZT0yLCB4aW50ZXJjZXB0ID0gMC42LCBhbHBoYT0wLjgpICsKICAjIGdlb21fc21vb3RoKCkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBtZXRob2RfY29sb3JzLCBsYWJlbHM9c2V0TmFtZXMobWV0aG9kX2xhYmVscywgbWV0aG9kX25hbWVzKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IG1ldGhvZF9jb2xvcnMsIGxhYmVscz1zZXROYW1lcyhtZXRob2RfbGFiZWxzLCBtZXRob2RfbmFtZXMpKSArCiAgIyBmYWNldF9ncmlkKGJhdGNoRWZmZWN0fi4sIGxhYmVsbGVyPSJsYWJlbF9ib3RoIikgKwogIHhsYWIoInByb2JhYmlsaXR5IHRocmVzaG9sZCIpICsKICAgIHlsYWIocGFzdGUoIm1lYW4iLCBtZXRyaWMpKSArCiAgeGxpbSgwLjUsMC45KSArCiAgICB0aGVtZV9idyhiYXNlX3NpemU9MTYpIAoKbWV0cmljPSJGRFIiCnBsX3Rocl8yIDwtIG91dGNvbWVfZGYgJT4lCiAgZmlsdGVyKGJhdGNoRWZmZWN0PT0wICYgbWV0aG9kIT0ibWlsb19iYXRjaCIpICU+JQogIG11dGF0ZShGRFIgPSBGUC8oVFArRlApKSAlPiUKICBtdXRhdGUoVFBSPWlmZWxzZShpcy5uYW4oVFBSKSwgMCwgVFBSKSwKICAgICAgICAgRlBSPWlmZWxzZShpcy5uYW4oRlBSKSwgMCwgRlBSKSwKICAgICAgICAgICAgICAgICAgRkRSPWlmZWxzZShpcy5uYW4oRkRSKSwgMCwgRkRSKSwKICAgICAgICAgUHJlY2lzaW9uPWlmZWxzZShpcy5uYW4oUHJlY2lzaW9uKSwgMCwgUHJlY2lzaW9uKSkgJT4lCiAgcmVuYW1lKG1ldHJpYz1tZXRyaWMpICU+JQogIGdyb3VwX2J5KG1ldGhvZCwgREFfdGhyZXNoLCBiYXRjaEVmZmVjdCkgJT4lCiAgc3VtbWFyaXNlKG1lYW5fbWV0cmljPW1lYW4obWV0cmljKSwgCiAgICAgICAgICAgIHNkX21ldHJpYz1zZChtZXRyaWMpKSAlPiUKICBnZ3Bsb3QoYWVzKERBX3RocmVzaCwgbWVhbl9tZXRyaWMsIGNvbG9yPW1ldGhvZCkpICsKICBnZW9tX3BvaW50KHNpemU9MiwgYWxwaGE9MC43KSArCiAgZ2VvbV9yaWJib24oYWVzKHltaW49bWVhbl9tZXRyaWMtc2RfbWV0cmljLCB5bWF4PW1lYW5fbWV0cmljK3NkX21ldHJpYywgZmlsbD1tZXRob2QpLCBhbHBoYT0wLjIsIGNvbG9yPU5BKSArCiAgZ2VvbV9saW5lKCkgKwogIGdlb21fdmxpbmUobGluZXR5cGU9MiwgeGludGVyY2VwdCA9IDAuNiwgYWxwaGE9MC44KSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IG1ldGhvZF9jb2xvcnMsIGxhYmVscz1zZXROYW1lcyhtZXRob2RfbGFiZWxzLCBtZXRob2RfbmFtZXMpKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gbWV0aG9kX2NvbG9ycywgbGFiZWxzPXNldE5hbWVzKG1ldGhvZF9sYWJlbHMsIG1ldGhvZF9uYW1lcykpICsKICAjIGZhY2V0X2dyaWQoYmF0Y2hFZmZlY3R+LiwgbGFiZWxsZXI9ImxhYmVsX2JvdGgiKSArCiAgeGxhYigicHJvYmFiaWxpdHkgdGhyZXNob2xkIikgKwogICAgeWxhYihwYXN0ZSgibWVhbiIsIG1ldHJpYykpICsKICB4bGltKDAuNSwwLjkpICsKICAgIHRoZW1lX2J3KGJhc2Vfc2l6ZT0xNikgCgpwbF90aHJfMSArIHBsX3Rocl8yICsgcGxvdF9sYXlvdXQoZ3VpZGVzPSJjb2xsZWN0IikgKwogIGdnc2F2ZShwYXN0ZTAoZmlnZGlyLCAnYm1fcHJvYl90aHJlc2gucGRmJyksIGhlaWdodCA9IDMsIHdpZHRoID0gOCkKYGBgCmBgYHtyfQpvdXRjb21lX2RmIDwtIG91dGNvbWVfZGYgJT4lCiAgZmlsdGVyKERBX3RocmVzaD09MC42KSAKCnBsX2RmIDwtIG91dGNvbWVfZGYgJT4lCiAgZmlsdGVyKG1ldGhvZCE9Im1pbG9fYmF0Y2giKSAlPiUKICBtdXRhdGUoRkRSID0gRlAvKFRQK0ZQKSkgJT4lCiAgbXV0YXRlKFRQUj1pZmVsc2UoaXMubmFuKFRQUiksIDAsIFRQUiksCiAgICAgICAgIEZQUj1pZmVsc2UoaXMubmFuKEZQUiksIDAsIEZQUiksCiAgICAgICAgIEZEUj1pZmVsc2UoaXMubmFuKEZEUiksIDAsIEZEUiksCiAgICAgICAgIFByZWNpc2lvbj1pZmVsc2UoaXMubmFuKFByZWNpc2lvbiksIDAsIFByZWNpc2lvbikpICU+JQogIG11dGF0ZShwb3A9c3RyX3JlcGxhY2UocG9wLCAiXyIsICIgIikpICU+JQogIG11dGF0ZShwb3A9ZmFjdG9yKHBvcCwgbGV2ZWxzPXVuaXF1ZShwb3ApKSkgJT4lCiAgZmlsdGVyKERBX3RocmVzaCA+PSAwLjYgJiBiYXRjaEVmZmVjdD09MCkgCgpmaWcgPC0gIHBsX2RmICU+JQogIGdncGxvdChhZXMobWV0aG9kLCBUUFIsIGNvbG9yPW1ldGhvZCkpICsgCiAgZ2VvbV9ib3hwbG90KCkgKwogIGdnYmVlc3dhcm06Omdlb21fcXVhc2lyYW5kb20oYWxwaGE9MC41KSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC44LCBsaW5ldHlwZT0yKSArCiAgdGhlbWVfYncoYmFzZV9zaXplID0gMTYpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gbWV0aG9kX2NvbG9ycywgbGFiZWxzPXNldE5hbWVzKG1ldGhvZF9sYWJlbHMsIG1ldGhvZF9uYW1lcykpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBtZXRob2RfY29sb3JzLCBsYWJlbHM9c2V0TmFtZXMobWV0aG9kX2xhYmVscywgbWV0aG9kX25hbWVzKSkgKwogIGZhY2V0X2dyaWQoZW5yfi4sIGxhYmVsbGVyID0gJ2xhYmVsX2JvdGgnKSArCnBsX2RmICU+JQogIGdncGxvdChhZXMobWV0aG9kLCBGRFIsIGNvbG9yPW1ldGhvZCkpICsgCiAgZ2VvbV9ib3hwbG90KCkgKwogIGdnYmVlc3dhcm06Omdlb21fcXVhc2lyYW5kb20oYWxwaGE9MC41KSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC4xLCBsaW5ldHlwZT0yKSArCiAgdGhlbWVfYncoYmFzZV9zaXplID0gMTYpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gbWV0aG9kX2NvbG9ycywgbGFiZWxzPXNldE5hbWVzKG1ldGhvZF9sYWJlbHMsIG1ldGhvZF9uYW1lcykpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBtZXRob2RfY29sb3JzLCBsYWJlbHM9c2V0TmFtZXMobWV0aG9kX2xhYmVscywgbWV0aG9kX25hbWVzKSkgKwogIGZhY2V0X2dyaWQoZW5yfi4sIGxhYmVsbGVyID0gJ2xhYmVsX2JvdGgnKSArCiAgcGxvdF9sYXlvdXQoZ3VpZGVzPSdjb2xsZWN0JykgJgogIHRoZW1lKGF4aXMudGV4dC54PWVsZW1lbnRfYmxhbmsoKSkgCmZpZyArIGdnc2F2ZShwYXN0ZTAoZmlnZGlyLCAnYm1fbm9iYXRjaC5wbmcnKSwgaGVpZ2h0ID0gNSwgd2lkdGggPSA4KQpgYGAKCgpCcmVha2Rvd24gYnkgcG9wdWxhdGlvbjogZXhwbGFpbiB2YXJpYWJpbGl0eSBpbiBNRUxELCBwb3B1bGF0aW9uIHNpemUKCmBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD03LCBtZXNzYWdlPUZBTFNFfQpwb3Bfc2l6ZXMgPC0gdGFibGUoZW1icnlvX3NjZSRjZWxsdHlwZSkKCm91dGNvbWVfZGYgJT4lCiAgZmlsdGVyKG1ldGhvZCE9Im1pbG9fYmF0Y2giKSAlPiUKICBtdXRhdGUoRkRSID0gRlAvKFRQK0ZQKSkgJT4lCiAgbXV0YXRlKFRQUj1pZmVsc2UoaXMubmFuKFRQUiksIDAsIFRQUiksCiAgICAgICAgIEZQUj1pZmVsc2UoaXMubmFuKEZQUiksIDAsIEZQUiksCiAgICAgICAgIEZEUj1pZmVsc2UoaXMubmFuKEZEUiksIDAsIEZEUiksCiAgICAgICAgIFByZWNpc2lvbj1pZmVsc2UoaXMubmFuKFByZWNpc2lvbiksIDAsIFByZWNpc2lvbikpICU+JQogIG11dGF0ZShwb3A9c3RyX3JlcGxhY2UocG9wLCAiXyIsICIgIikpICU+JQogIG11dGF0ZShwb3Bfc2l6ZT1wb3Bfc2l6ZXNbcG9wXSkgICU+JQogIGFycmFuZ2UocG9wX3NpemUpICU+JQogIG11dGF0ZShwb3A9ZmFjdG9yKHBvcCwgbGV2ZWxzPXVuaXF1ZShwb3ApKSkgJT4lCiAgZmlsdGVyKERBX3RocmVzaCA+PSAwLjYgJiBiYXRjaEVmZmVjdD09MCkgJT4lCiAgZ2dwbG90KGFlcyhwb3Bfc2l6ZSwgVFBSLCBjb2xvcj1tZXRob2QpKSArIAogIGdlb21fcG9pbnQoc2l6ZT0yLCBhbHBoYT0wLjcpICsKICBmYWNldF9ncmlkKGVucn4uLCBsYWJlbGxlcj0ibGFiZWxfYm90aCIpICsKICBnZW9tX3Ntb290aChtZXRob2Q9ImxtIikgKwogIHRoZW1lX2J3KGJhc2Vfc2l6ZSA9IDE2KSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IG1ldGhvZF9jb2xvcnMsIGxhYmVscz1zZXROYW1lcyhtZXRob2RfbGFiZWxzLCBtZXRob2RfbmFtZXMpKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gbWV0aG9kX2NvbG9ycywgbGFiZWxzPXNldE5hbWVzKG1ldGhvZF9sYWJlbHMsIG1ldGhvZF9uYW1lcykpICsKICB4bGFiKCJTaXplIG9mIERBIHBvcHVsYXRpb24iKSArCiAgeGxpbSgwLDcwMDApICsKICBnZ3B1YnI6OnN0YXRfY29yKGxhYmVsLngubnBjID0gMSwgbGFiZWwueS5ucGMgPSAxLCBoanVzdCA9IDEpICsKICBnZ3NhdmUocGFzdGUwKGZpZ2RpciwgInBvcF9zaXplLnBuZyIpLCBoZWlnaHQgPSA3LCB3aWR0aCA9IDgpCgoKCmBgYAoKCiMjIEJhdGNoIGVmZmVjdAoKTG9hZCBsb3V2YWluX2JhdGNoCmBgYHtyfQpyZXNfZmlsZXMgPC0gbGlzdC5maWxlcyhvdXRkaXIsIHBhdHRlcm49ImJhdGNoRWZmZWN0LnsxLDR9LkRBcmVzdWx0cy5sb3V2YWluX2JhdGNoLmNzdiIpCnJlc19maWxlc19mdWxsIDwtIGxpc3QuZmlsZXMob3V0ZGlyLCBwYXR0ZXJuPSJiYXRjaEVmZmVjdC57MSw0fS5EQXJlc3VsdHMubG91dmFpbl9iYXRjaC5jc3YiLCBmdWxsLm5hbWVzID0gVFJVRSkKaW5fZmlsZXMgPC0gbGlzdC5maWxlcygifi9kYXRhL21pbG9fYmVuY2htYXJrL3N5bnRoZXRpY19kYXRhLyIsIHBhdHRlcm49ImNvbGRhdGEuY3N2IikKCiMjIE1ha2UgZGF0YSBmcmFtZSB3IGJlbmNobWFyayBwYXJhbWV0ZXJzCmxvdXZhaW5fb3V0X21ldGFfZGYgPC0gZGF0YS5mcmFtZShmaWxlX2lkID0gc3RyX3JlbW92ZV9hbGwocmVzX2ZpbGVzLCAiYmVuY2htYXJrX2VtYnJ5b19wb3BffC5jc3YiKSkgJT4lCiAgc2VwYXJhdGUoY29sID0gZmlsZV9pZCwgc2VwID0gIi5EQXJlc3VsdHMuIiwgaW50bz1jKCJmaWxlX2lkIiwgIm1ldGhvZCIpKSAlPiUKICBzZXBhcmF0ZShjb2wgPSBmaWxlX2lkLCBzZXAgPSAiX2VuciIsIGludG89YygicG9wIiwgImZpbGVfaWQiKSkgJT4lCiAgc2VwYXJhdGUoY29sID0gZmlsZV9pZCwgc2VwID0gIl8iLCBpbnRvPWMoImVuciIsICJzZWVkIiwgImJhdGNoRWZmZWN0IikpICU+JQogICMgbXV0YXRlKE1OTmNvcnJlY3RlZD1pZmVsc2UoJ01OTmNvcnJlY3RlZCcgJWluJSBiYXRjaEVmZmVjdCwgVFJVRSwgRkFMU0UpKSAlPiUKICBtdXRhdGUoc2VlZD1zdHJfcmVtb3ZlKHNlZWQsICJzZWVkIiksIGJhdGNoRWZmZWN0PXN0cl9yZW1vdmVfYWxsKGJhdGNoRWZmZWN0LCAiYmF0Y2hFZmZlY3R8Lk1OTmNvcnJlY3RlZCIpKSAKCiMgbG91dmFpbl9vdXRfbWV0YV9kZiAlPiUKIyAgIGZpbHRlcihtZXRob2Q9PSJsb3V2YWluX2JhdGNoIikgJT4lCiMgICBnZ3Bsb3QoYWVzKHBvcCwgZmlsbD1iYXRjaEVmZmVjdCkpICsgZ2VvbV9iYXIoKSArIGNvb3JkX2ZsaXAoKQoKIyMgTG9hZCByZXN1bHRzCmxvdXZhaW5iX291dGNvbWVfZGYgPC0gbGFwcGx5KHNlcV9hbG9uZyhyZXNfZmlsZXNfZnVsbCksIGZ1bmN0aW9uKGkpeyAKICBwcmludChwYXN0ZSgiT3V0Y29tZSBuby4gIiwgaSkpCiAgYmVuY2htYXJrX2RmIDwtIHJlYWRfY3N2KHJlc19maWxlc19mdWxsW2ldKSAlPiUKICAgICAgLm91dGNvbWVfYnlfcHJvYihkYV91cHBlciA9IDAuNikgJT4lCiAgICAgIG11dGF0ZShEQV90aHJlc2g9MC42KSAlPiUKICAgICAgdW5ncm91cCgpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KC0gbWV0aG9kKSAlPiUKICAgICAgYmluZF9jb2xzKGxvdXZhaW5fb3V0X21ldGFfZGYgW2ksXSkgCiAgcG9wX2VuciA8LSBhcy5udW1lcmljKGxvdXZhaW5fb3V0X21ldGFfZGYgW2ksImVuciJdKQogIGJlbmNobWFya19kZgogIH0pICU+JQogIHB1cnJyOjpyZWR1Y2UoYmluZF9yb3dzKSAlPiUKICBmaWx0ZXIoZW5yID4gMC42KSAKCmxvdXZhaW5iX291dGNvbWVfZGYgPC0gbG91dmFpbmJfb3V0Y29tZV9kZiAlPiUKICBtdXRhdGUoc2VlZD1hcy5udW1lcmljKHNlZWQpLCBiYXRjaEVmZmVjdD1hcy5udW1lcmljKGJhdGNoRWZmZWN0KSwgZW5yPWFzLm51bWVyaWMoZW5yKSkKYGBgCgoKPCEtLSBgYGB7ciwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTEwfSAtLT4KPCEtLSBkYXRhX2lkID0gImVtYnJ5byIgLS0+CjwhLS0gcG9wPSJTb21pdGljX21lc29kZXJtIiAtLT4KPCEtLSBwb3BfZW5yPTAuOCAtLT4KPCEtLSBzZWVkPTQzIC0tPgo8IS0tIG91dGRpciA8LSAnL25mcy90ZWFtMjA1L2VkNi9kYXRhL21pbG9fYmVuY2htYXJrL3N5bnRoZXRpY19kYXRhLycgLS0+CjwhLS0gb3V0cHJlZml4IDwtIHN0cl9jKCJiZW5jaG1hcmtfIiwgZGF0YV9pZCwgIl9wb3BfIiwgcG9wLCAnX2VucicsIHBvcF9lbnIsICJfc2VlZCIsIHNlZWQpIC0tPgo8IS0tIGNvbGRhdGEgPC0gcmVhZF9jc3YocGFzdGUwKG91dGRpciwgb3V0cHJlZml4LCAiLmNvbGRhdGEuY3N2IikpICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoKSAtLT4KPCEtLSBYX3BjYSA8LXJlYWRfY3N2KHN0cl9jKG91dGRpciwgb3V0cHJlZml4LCAiX2JhdGNoRWZmZWN0IiwgYmVfc2QsICIucGNhLmNzdiIpKSAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCkgICAtLT4KPCEtLSAjIyBGaW5kIERBIHByb2JhYmlsaXR5IHggY2VsbCAtLT4KPCEtLSBibV9wYXJhbXMgPSBsaXN0KCAtLT4KPCEtLSAgIG1pbG8gPSBsaXN0KGs9ayksIC0tPgo8IS0tICAgbWlsb19iYXRjaCA9IGxpc3Qoaz1rKSwgLS0+CjwhLS0gICBtZWxkID0gbGlzdChrPWspLCAtLT4KPCEtLSAgIGRhc2VxID0gbGlzdChrLnZlYz1zZXEoay0oay8yKSwgaysoay8yKSwgYnk9MTApKSwgLS0+CjwhLS0gICBsb3V2YWluID0gbGlzdChrPWspLCAtLT4KPCEtLSAgIGxvdXZhaW5fYmF0Y2ggPSBsaXN0KGs9aykgLS0+CjwhLS0gICApIC0tPgoKPCEtLSAjIyBSdW4gREEgbWV0aG9kIC0tPgo8IS0tICMjIEFkZCByZWR1Y2VkIGRpbSArIGNvbGRhdGEgdG8gc2NlIC0tPgo8IS0tIGNvbERhdGEoZW1icnlvX3NjZSkgPC0gRGF0YUZyYW1lKGNvbGRhdGEpIC0tPgo8IS0tIHJlZHVjZWREaW0oZW1icnlvX3NjZSwgInBjYV9iYXRjaCIpIDwtIGFzLm1hdHJpeChYX3BjYSkgLS0+Cgo8IS0tICMjIFJ1biBsb3V2YWluIC0tPgo8IS0tIGxvdXZhaW5fYmF0Y2hfcmVzIDwtIHJ1bl9sb3V2YWluKGVtYnJ5b19zY2UsIGNvbmRpdGlvbl9jb2w9Y29uZGl0aW9uX2NvbCwgc2FtcGxlX2NvbD1zYW1wbGVfY29sLCAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWR1Y2VkLmRpbSA9ICJwY2FfYmF0Y2giLCBkPTMwLCBrPTUwLCBiYXRjaF9jb2w9InN5bnRoX2JhdGNoZXMiKSAtLT4KPCEtLSBsb3V2YWluX3JlcyA8LSBydW5fbG91dmFpbihlbWJyeW9fc2NlLCBjb25kaXRpb25fY29sPWNvbmRpdGlvbl9jb2wsIHNhbXBsZV9jb2w9c2FtcGxlX2NvbCwgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkdWNlZC5kaW0gPSAicGNhX2JhdGNoIiwgZD0zMCwgaz01MCkgLS0+Cgo8IS0tIG91dCA8LSBsb3V2YWluMm91dHB1dChsb3V2YWluX2JhdGNoX3Jlcywgb3V0X3R5cGUgPSAnbGFiZWxzJyxhbHBoYSA9IDAuMSkgLS0+CjwhLS0gbG91dCA8LSBsb3V2YWluMm91dHB1dChsb3V2YWluX3Jlcywgb3V0X3R5cGUgPSAnbGFiZWxzJywgYWxwaGEgPSAwLjEpIC0tPgoKPCEtLSBnZ3Bsb3QobG91dmFpbl9iYXRjaF9yZXMsIGFlcyhsb2dGQywgLWxvZzEwKEZEUikpKSArIC0tPgo8IS0tICAgZ2VvbV9wb2ludCgpICsgLS0+CjwhLS0gICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAxKSAtLT4KCjwhLS0gZW1icnlvX3NjZSRsb3V2YWluIDwtIGxvdXZhaW5fYmF0Y2hfcmVzJExvdXZhaW4uQ2x1c3QgLS0+CjwhLS0gZW1icnlvX3NjZSRwcmVkX2xvdXZhaW5fYmF0Y2ggPC0gb3V0IC0tPgo8IS0tIGVtYnJ5b19zY2UkcHJlZF9sb3V2YWluIDwtIGxvdXQgLS0+CjwhLS0gIyBlbWJyeW9fc2NlIDwtIHJ1blVNQVAoZW1icnlvX3NjZSwgZGltcmVkPSJwY2FfYmF0Y2giLCBuYW1lID0gJ3VtYXBfYmF0Y2gnLCBuX2RpbXJlZD0xOjMwKSAgIC0tPgoKPCEtLSBwbG90UmVkdWNlZERpbShlbWJyeW9fc2NlLCAidW1hcF9iYXRjaCIsIGNvbG91cl9ieT0icHJlZF9sb3V2YWluIiwgcG9pbnRfc2l6ZT0wLjEpICsgLS0+CjwhLS0gcGxvdFJlZHVjZWREaW0oZW1icnlvX3NjZSwgInVtYXBfYmF0Y2giLCBjb2xvdXJfYnk9InByZWRfbG91dmFpbl9iYXRjaCIsIHBvaW50X3NpemU9MC4xKSArIC0tPgo8IS0tIHBsb3RSZWR1Y2VkRGltKGVtYnJ5b19zY2UsICJ1bWFwX2JhdGNoIiwgY29sb3VyX2J5PSJzeW50aF9iYXRjaGVzIiwgcG9pbnRfc2l6ZT0wLjEpICsgLS0+CjwhLS0gICBwbG90UmVkdWNlZERpbShlbWJyeW9fc2NlLCAidW1hcF9iYXRjaCIsIGNvbG91cl9ieT0ic3ludGhfbGFiZWxzIiwgcG9pbnRfc2l6ZT0wLjEpICsgLS0+CjwhLS0gICBwbG90UmVkdWNlZERpbShlbWJyeW9fc2NlLCAidW1hcF9iYXRjaCIsIGNvbG91cl9ieT0ibG91dmFpbiIsIHBvaW50X3NpemU9MC4xKSArIC0tPgo8IS0tICAgcGxvdF9sYXlvdXQobnJvdz0yLCBuY29sPTMpIC0tPgoKPCEtLSAjIyBTYXZlIHJlc3VsdHMgLS0+CjwhLS0gYm0gPC0gZGF0YS5mcmFtZShibV9vdXQ9b3V0KSAtLT4KPCEtLSBibSR0cnVlX3Byb2IgPC0gZW1icnlvX3NjZSRDb25kaXRpb24yX3Byb2IgIC0tPgo8IS0tIGJtJHRydWUgPC0gZW1icnlvX3NjZSR0cnVlX2xhYmVscyAtLT4KPCEtLSBpZiAoIWlzLm51bGwoZW1icnlvX3NjZSR0cnVlX0RBX2NsdXN0KSkgeyAtLT4KPCEtLSBibSR0cnVlX2NsdXN0IDwtIGVtYnJ5b19zY2UkdHJ1ZV9EQV9jbHVzdCAtLT4KPCEtLSB9IC0tPgo8IS0tIGxvbmdfYm0gPC0gcGl2b3RfbG9uZ2VyKGJtLCBjb2xzID0gYm1fb3V0LCBuYW1lc190bz0nbWV0aG9kJywgdmFsdWVzX3RvPSJwcmVkIikgLS0+CjwhLS0gLm91dGNvbWVfYnlfcHJvYihsb25nX2JtLCAwLjYpIC0tPgo8IS0tIGxvbmdfYm1bWyJtZXRob2QiXV0gPC0gbWV0aG9kIC0tPgoKPCEtLSBwbG90UmVkdWNlZERpbShlbWJyeW9fc2NlLCAidW1hcF9iYXRjaCIsIGNvbG91cl9ieT0ibG91dmFpbiIsIHBvaW50X3NpemU9MC4xLCB0ZXh0X2J5ID0gImxvdXZhaW4iKSArIC0tPgo8IS0tICAgcGxvdFJlZHVjZWREaW0oZW1icnlvX3NjZSwgInVtYXBfYmF0Y2giLCBjb2xvdXJfYnk9IkNvbmRpdGlvbjJfcHJvYiIsIHBvaW50X3NpemU9MC4xKSAgLS0+CjwhLS0gYGBgIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gZGVzaWduX2RmICU+JSAtLT4KPCEtLSAgIGdncGxvdChhZXMoc3ludGhfbGFiZWxzLCBzYW1wbGUpKSArIGdlb21fdGlsZSgpICsgLS0+CjwhLS0gZGVzaWduX2RmICU+JSAtLT4KPCEtLSAgIGdncGxvdChhZXMoc3ludGhfYmF0Y2hlcywgc2FtcGxlKSkgKyBnZW9tX3RpbGUoKSAtLT4KCjwhLS0gYGBgIC0tPgoKCgo8IS0tIGBgYHtyfSAtLT4KPCEtLSAjIyBNYWtlIGRlc2lnbiBtYXRyaXggLS0+Cgo8IS0tIGJhdGNoX2NvbD0ic3ludGhfYmF0Y2hlcyIgLS0+CjwhLS0gZGVzaWduX2RmIDwtIGFzLnRpYmJsZShjb2xEYXRhKGVtYnJ5b19zY2UpWyxjKHNhbXBsZV9jb2wsIGNvbmRpdGlvbl9jb2wsIGJhdGNoX2NvbCldKSAlPiUgLS0+CjwhLS0gICBkaXN0aW5jdCgpICU+JSAtLT4KPCEtLSAgIHJlbmFtZShzYW1wbGU9c2FtcGxlX2NvbCkgLS0+CjwhLS0gaWYgKGlzLm51bGwoYmF0Y2hfY29sKSkgeyAtLT4KPCEtLSAgIGRlc2lnbiA8LSBmb3JtdWxhKHBhc3RlKCdGcmVxIH4nLCBjb25kaXRpb25fY29sLCBjb2xsYXBzZSA9ICcgJykpICAgLS0+CjwhLS0gfSBlbHNlIHsgLS0+CjwhLS0gICBkZXNpZ24gPC0gZm9ybXVsYShwYXN0ZSgnRnJlcSB+JywgYmF0Y2hfY29sLCAiKyIsIGNvbmRpdGlvbl9jb2wsIGNvbGxhcHNlID0gJyAnKSkgLS0+CjwhLS0gfSAtLT4KPCEtLSAjIyBMb3V2YWluIGNsdXN0ZXJpbmcgLS0+CjwhLS0gc2NlIDwtIGVtYnJ5b19zY2UgLS0+CjwhLS0gWF9yZWRfZGltID0gcmVkdWNlZERpbShzY2UsIHJlZHVjZWQuZGltKVssMTpkXSAtLT4KPCEtLSBzY2UuZ3JhcGggPC0gYnVpbGRLTk5HcmFwaCh0KFhfcmVkX2RpbSksIGs9aykgLS0+CjwhLS0gbG91dmFpbi5jbHVzdCA8LSBjbHVzdGVyX2xvdXZhaW4oc2NlLmdyYXBoKSAtLT4KPCEtLSBsb3V2YWluLmNsdXN0LmlkcyA8LSBtZW1iZXJzaGlwKGxvdXZhaW4uY2x1c3QpIC0tPgoKPCEtLSBjb25kaXRpb25fdmVjIDwtIGNvbERhdGEoc2NlKVtbY29uZGl0aW9uX2NvbF1dIC0tPgo8IS0tIHNhbXBsZV9sYWJlbHMgPC0gY29sRGF0YShzY2UpW1tzYW1wbGVfY29sXV0gLS0+CjwhLS0gY2x1c3QuZGYgPC0gZGF0YS5mcmFtZSgiY2VsbF9pZCI9Y29sbmFtZXMoc2NlKSwgIkxvdXZhaW4uQ2x1c3QiPWFzLmNoYXJhY3Rlcihsb3V2YWluLmNsdXN0LmlkcykpIC0tPgo8IS0tIGNsdXN0LmRmJFNhbXBsZSA8LSBzYW1wbGVfbGFiZWxzIC0tPgo8IS0tIGNsdXN0LmRmJENvbmRpdGlvbiA8LSBjb25kaXRpb25fdmVjIC0tPgoKPCEtLSBsb3V2YWluLmNvdW50IDwtIHRhYmxlKGNsdXN0LmRmJExvdXZhaW4uQ2x1c3QsIGNsdXN0LmRmJFNhbXBsZSkgLS0+CjwhLS0gYXR0cmlidXRlcyhsb3V2YWluLmNvdW50KSRjbGFzcyA8LSAibWF0cml4IiAtLT4KCjwhLS0gZGYgPC0gbWVsdChsb3V2YWluLmNvdW50LCB2YXJuYW1lcz1jKCJjbHVzdGVyIiwgInNhbXBsZSIpLCAgdmFsdWUubmFtZT0iRnJlcSIpICU+JSAtLT4KPCEtLSAgICMgcmVuYW1lKGNsdXN0ZXI9VmFyMSwgc2FtcGxlPVZhcjIpICU+JSAtLT4KPCEtLSAgIG11dGF0ZShjbHVzdGVyPWZhY3RvcihjbHVzdGVyKSkgJT4lIC0tPgo8IS0tICAgbGVmdF9qb2luKGRlc2lnbl9kZiwgYnk9InNhbXBsZSIpICU+JSAtLT4KPCEtLSAgIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSAtLT4KPCEtLSAgIGRvKG1vZGVsPWdsbS5uYihkZXNpZ24sIGRhdGE9LikpICAtLT4KCjwhLS0gc3VtbWFyeShkZiRtb2RlbFtbMV1dKSRjb2VmZmljaWVudHMgLS0+CjwhLS0gcmVzX2RmIDwtIHQoc2FwcGx5KGRmJG1vZGVsLCBmdW5jdGlvbih4KSBzdW1tYXJ5KHgpJGNvZWZmaWNpZW50c1tucm93KHN1bW1hcnkoeCkkY29lZmZpY2llbnRzKSxdKSkgLS0+CjwhLS0gY29sbmFtZXMocmVzX2RmKSA8LSBjKCJsb2dGQyIsIlN0ZC4gRXJyb3IiLCAieiB2YWx1ZSIsICAgICJQdmFsIiApIC0tPgo8IS0tIGxvdXZhaW4ucmVzIDwtIGNiaW5kKGRmLCByZXNfZGYpICU+JSAtLT4KPCEtLSBtdXRhdGUoRkRSPXAuYWRqdXN0KFB2YWwsIG1ldGhvZCA9ICJCSCIpKSAtLT4KPCEtLSByb3duYW1lcyhsb3V2YWluLnJlcykgPC0gbG91dmFpbi5yZXMkY2x1c3RlciAtLT4KPCEtLSBgYGAgLS0+Cgo8IS0tIFRlc3QgdyBtb3JlIHJlcGxpY2F0ZXMgLS0+CjwhLS0gYGBge3J9IC0tPgo8IS0tIGRhdGFfaWQgPSAiZW1icnlvIiAtLT4KPCEtLSBwb3A9IlNvbWl0aWMgbWVzb2Rlcm0iIC0tPgo8IS0tIHBvcF9lbnI9MC44IC0tPgo8IS0tIHNlZWQ9NDMgLS0+CjwhLS0gb3V0ZGlyIDwtICcvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvc3ludGhldGljX2RhdGEvJyAtLT4KCjwhLS0gc2NlIDwtIGFkZF9zeW50aGV0aWNfbGFiZWxzX3BvcChzY2UsIHBvcD1wb3AsIHBvcF9jb2x1bW4gPSAiY2VsbHR5cGUiLCBzZWVkPXNlZWQsIHBvcF9lbnI9cG9wX2Vuciwgbl9yZXBsaWNhdGVzID0gNiwgbl9iYXRjaGVzID0gMiwgbl9jb25kaXRpb25zID0gMikgLS0+Cgo8IS0tIHNjZV9iZSA8LSBhZGRfYmF0Y2hfZWZmZWN0KHNjZSwgYmF0Y2hfY29sID0gInN5bnRoX2JhdGNoZXMiLCBub3JtX3NkPTAuNzUpIC0tPgoKPCEtLSAjIyBUZXN0IERBIHcgbG91dmFpbiAtLT4KPCEtLSBiYXRjaF9jb2w9InN5bnRoX2JhdGNoZXMiIC0tPgo8IS0tIGRlc2lnbl9kZiA8LSBhcy50aWJibGUoY29sRGF0YShzY2VfYmUpWyxjKHNhbXBsZV9jb2wsIGNvbmRpdGlvbl9jb2wsIGJhdGNoX2NvbCldKSAlPiUgLS0+CjwhLS0gICBkaXN0aW5jdCgpICU+JSAtLT4KPCEtLSAgIHJlbmFtZShzYW1wbGU9c2FtcGxlX2NvbCkgLS0+CjwhLS0gaWYgKGlzLm51bGwoYmF0Y2hfY29sKSkgeyAtLT4KPCEtLSAgIGRlc2lnbiA8LSBmb3JtdWxhKHBhc3RlKCdGcmVxIH4nLCBjb25kaXRpb25fY29sLCBjb2xsYXBzZSA9ICcgJykpICAgLS0+CjwhLS0gfSBlbHNlIHsgLS0+CjwhLS0gICBkZXNpZ24gPC0gZm9ybXVsYShwYXN0ZSgnRnJlcSB+JywgYmF0Y2hfY29sLCAiKyIsIGNvbmRpdGlvbl9jb2wsIGNvbGxhcHNlID0gJyAnKSkgLS0+CjwhLS0gfSAtLT4KCjwhLS0gIyMgTG91dmFpbiBjbHVzdGVyaW5nIC0tPgo8IS0tIFhfcmVkX2RpbSA9IHJlZHVjZWREaW0oc2NlX2JlLCByZWR1Y2VkLmRpbSlbLDE6ZF0gLS0+CjwhLS0gc2NlLmdyYXBoIDwtIGJ1aWxkS05OR3JhcGgodChYX3JlZF9kaW0pLCBrPWspIC0tPgo8IS0tIGxvdXZhaW4uY2x1c3QgPC0gY2x1c3Rlcl9sb3V2YWluKHNjZS5ncmFwaCkgLS0+CjwhLS0gbG91dmFpbi5jbHVzdC5pZHMgPC0gbWVtYmVyc2hpcChsb3V2YWluLmNsdXN0KSAtLT4KCjwhLS0gY29uZGl0aW9uX3ZlYyA8LSBjb2xEYXRhKHNjZV9iZSlbW2NvbmRpdGlvbl9jb2xdXSAtLT4KPCEtLSBzYW1wbGVfbGFiZWxzIDwtIGNvbERhdGEoc2NlX2JlKVtbc2FtcGxlX2NvbF1dIC0tPgo8IS0tIGNsdXN0LmRmIDwtIGRhdGEuZnJhbWUoImNlbGxfaWQiPWNvbG5hbWVzKHNjZV9iZSksICJMb3V2YWluLkNsdXN0Ij1hcy5jaGFyYWN0ZXIobG91dmFpbi5jbHVzdC5pZHMpKSAtLT4KPCEtLSBjbHVzdC5kZiRTYW1wbGUgPC0gc2FtcGxlX2xhYmVscyAtLT4KPCEtLSBjbHVzdC5kZiRDb25kaXRpb24gPC0gY29uZGl0aW9uX3ZlYyAtLT4KCjwhLS0gbG91dmFpbi5jb3VudCA8LSB0YWJsZShjbHVzdC5kZiRMb3V2YWluLkNsdXN0LCBjbHVzdC5kZiRTYW1wbGUpIC0tPgo8IS0tIGF0dHJpYnV0ZXMobG91dmFpbi5jb3VudCkkY2xhc3MgPC0gIm1hdHJpeCIgLS0+Cgo8IS0tIGRmIDwtIG1lbHQobG91dmFpbi5jb3VudCwgdmFybmFtZXM9YygiY2x1c3RlciIsICJzYW1wbGUiKSwgIHZhbHVlLm5hbWU9IkZyZXEiKSAlPiUgLS0+CjwhLS0gICBtdXRhdGUoY2x1c3Rlcj1mYWN0b3IoY2x1c3RlcikpICU+JSAtLT4KPCEtLSAgIGxlZnRfam9pbihkZXNpZ25fZGYsIGJ5PSJzYW1wbGUiKSAlPiUgLS0+CjwhLS0gICBncm91cF9ieShzYW1wbGUpICU+JSAtLT4KPCEtLSAgIG11dGF0ZShOX3M9c3VtKEZyZXEpKSAlPiUgLS0+CjwhLS0gICB1bmdyb3VwKCkgJT4lIC0tPgo8IS0tICAgZ3JvdXBfYnkoY2x1c3RlcikgJT4lIC0tPgo8IS0tICAgZG8obW9kZWw9Z2xtKEZyZXEgfiBzeW50aF9iYXRjaGVzICsgc3ludGhfbGFiZWxzLCBkYXRhPS4sIGZhbWlseT0icG9pc3NvbiIpKSAgLS0+Cgo8IS0tIHJlc19kZiA8LSB0KHNhcHBseShkZiRtb2RlbCwgZnVuY3Rpb24oeCkgc3VtbWFyeSh4KSRjb2VmZmljaWVudHNbbnJvdyhzdW1tYXJ5KHgpJGNvZWZmaWNpZW50cyksXSkpIC0tPgo8IS0tIGNvbG5hbWVzKHJlc19kZikgPC0gYygibG9nRkMiLCJTdGQuIEVycm9yIiwgInogdmFsdWUiLCAgICAiUHZhbCIgKSAtLT4KPCEtLSBsb3V2YWluLnJlcyA8LSBjYmluZChkZiwgcmVzX2RmKSAlPiUgLS0+CjwhLS0gbXV0YXRlKEZEUj1wLmFkanVzdChQdmFsLCBtZXRob2QgPSAiQkgiKSkgLS0+CjwhLS0gcm93bmFtZXMobG91dmFpbi5yZXMpIDwtIGxvdXZhaW4ucmVzJGNsdXN0ZXIgLS0+Cgo8IS0tIHNjZV9iZSRwcmVkIDwtIGxvdXZhaW5fcmVzJEZEUiA8IDAuMSAtLT4KPCEtLSBzY2VfYmUkbG91dmFpbiA8LSBsb3V2YWluX3JlcyRMb3V2YWluLkNsdXN0IC0tPgoKPCEtLSBwbG90UmVkdWNlZERpbShzY2VfYmUsICJ1bWFwX2JhdGNoIiwgY29sb3VyX2J5PSJwcmVkIiwgcG9pbnRfc2l6ZT0wLjEpICAtLT4KPCEtLSBwbG90UmVkdWNlZERpbShzY2VfYmUsICJ1bWFwX2JhdGNoIiwgY29sb3VyX2J5PSJsb3V2YWluIiwgdGV4dF9ieT0ibG91dmFpbiIsIHBvaW50X3NpemU9MC4xKSAgLS0+CgoKPCEtLSBgYGAgLS0+Cgo8IS0tIGBgYHtyfSAtLT4KPCEtLSBtZWx0KGxvdXZhaW4uY291bnQsIHZhcm5hbWVzPWMoImNsdXN0ZXIiLCAic2FtcGxlIiksICB2YWx1ZS5uYW1lPSJGcmVxIikgJT4lIC0tPgo8IS0tICAgbXV0YXRlKGNsdXN0ZXI9ZmFjdG9yKGNsdXN0ZXIpKSAlPiUgLS0+CjwhLS0gICAgIGdyb3VwX2J5KHNhbXBsZSkgJT4lIC0tPgo8IS0tICAgbXV0YXRlKE5fcz1zdW0oRnJlcSkpICU+JSAtLT4KPCEtLSAgIHVuZ3JvdXAoKSAlPiUgLS0+CjwhLS0gICBsZWZ0X2pvaW4oZGVzaWduX2RmLCBieT0ic2FtcGxlIikgJT4lIC0tPgo8IS0tICAgZ2dwbG90KGFlcyhzeW50aF9iYXRjaGVzLCBGcmVxL05fcywgY29sb3I9c3ludGhfbGFiZWxzKSkgKyAtLT4KPCEtLSAgIGdlb21fYm94cGxvdCgpICsgLS0+CjwhLS0gICBmYWNldF93cmFwKGNsdXN0ZXJ+LikgLS0+CjwhLS0gYGBgIC0tPgoKCjwhLS0gYGBge3J9IC0tPgo8IS0tIGJhdGNoX2NvbD1OVUxMIC0tPgo8IS0tIGRlc2lnbl9kZiA8LSBhcy50aWJibGUoY29sRGF0YShlbWJyeW9fc2NlKVssYyhzYW1wbGVfY29sLCBjb25kaXRpb25fY29sLCBiYXRjaF9jb2wpXSkgJT4lIC0tPgo8IS0tICAgZGlzdGluY3QoKSAlPiUgLS0+CjwhLS0gICByZW5hbWUoc2FtcGxlPXNhbXBsZV9jb2wpIC0tPgo8IS0tIGlmIChpcy5udWxsKGJhdGNoX2NvbCkpIHsgLS0+CjwhLS0gICBkZXNpZ24gPC0gZm9ybXVsYShwYXN0ZSgnficsIGNvbmRpdGlvbl9jb2wsIGNvbGxhcHNlID0gJyAnKSkgICAtLT4KPCEtLSB9IGVsc2UgeyAtLT4KPCEtLSAgIGRlc2lnbiA8LSBmb3JtdWxhKHBhc3RlKCd+JywgYmF0Y2hfY29sLCAiKyIsIGNvbmRpdGlvbl9jb2wsIGNvbGxhcHNlID0gJyAnKSkgLS0+CjwhLS0gfSAtLT4KPCEtLSBtb2RlbCA8LSBtb2RlbC5tYXRyaXgoZGVzaWduLCBkYXRhPWRlc2lnbl9kZikgLS0+CjwhLS0gcm93bmFtZXMobW9kZWwpIDwtIHJvd25hbWVzKGRlc2lnbl9kZikgLS0+Cgo8IS0tIHN1YnNldC5jb3VudHMgPC0gRkFMU0UgLS0+CjwhLS0ga2VlcC5uaCA8LSByZXAoVFJVRSwgbnJvdyhsb3V2YWluLmNvdW50KSkgLS0+Cgo8IS0tIGRnZSA8LSBER0VMaXN0KGNvdW50cz1sb3V2YWluLmNvdW50W2tlZXAubmgsIF0sIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICBsaWIuc2l6ZT1sb2coY29sU3Vtcyhsb3V2YWluLmNvdW50KSkpIC0tPgoKPCEtLSBkZ2UgPC0gZXN0aW1hdGVEaXNwKGRnZSwgbW9kZWwpIC0tPgo8IS0tIGZpdCA8LSBnbG1RTEZpdChkZ2UsIG1vZGVsLCByb2J1c3Q9VFJVRSkgLS0+CjwhLS0gaWYoIWlzLm51bGwobW9kZWwuY29udHJhc3RzKSl7IC0tPgo8IS0tICAgICBtb2QuY29uc3RyYXN0IDwtIG1ha2VDb250cmFzdHMoY29udHJhc3RzPW1vZGVsLmNvbnRyYXN0cywgbGV2ZWxzPW1vZGVsKSAtLT4KPCEtLSAgICAgcmVzIDwtIGFzLmRhdGEuZnJhbWUodG9wVGFncyhnbG1RTEZUZXN0KGZpdCwgY29udHJhc3Q9bW9kLmNvbnN0cmFzdCksIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQuYnk9J25vbmUnLCBuPUluZikpIC0tPgo8IS0tIH0gZWxzZXsgLS0+CjwhLS0gICAgIG4uY29lZiA8LSBuY29sKG1vZGVsKSAtLT4KPCEtLSAgICAgcmVzIDwtIGFzLmRhdGEuZnJhbWUodG9wVGFncyhnbG1RTEZUZXN0KGZpdCwgY29lZj1uLmNvZWYpLCBzb3J0LmJ5PSdub25lJywgbj1JbmYpKSAtLT4KPCEtLSB9IC0tPgoKPCEtLSAgICAgcmVzJE5ob29kIDwtIGFzLm51bWVyaWMocm93bmFtZXMocmVzKSkgLS0+Cgo8IS0tIHJlcyAtLT4KPCEtLSBnZ3Bsb3QocmVzLCBhZXMobG9nRkMsIC1sb2cxMChGRFIpKSkgKyBnZW9tX3BvaW50KCkgLS0+CjwhLS0gYGBgIC0tPgoKCjwhLS0gYGBge3J9IC0tPgo8IS0tIGxvdXZhaW5iX291dGNvbWVfZGYgJT4lIC0tPgo8IS0tICAgZmlsdGVyKGVucj09JzAuOCcsIHBvcD09IlNvbWl0aWNfbWVzb2Rlcm0iLCBiYXRjaEVmZmVjdD09YXMuY2hhcmFjdGVyKGJlX3NkKSwgbWV0aG9kPT0ibG91dmFpbl9iYXRjaCIsIHNlZWQ9PSc0MycpIC0tPgo8IS0tIGBgYCAtLT4KCgoKCgpgYGB7ciwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9OH0KCnBsX2RmIDwtIG91dGNvbWVfZGYgJT4lCiAgYmluZF9yb3dzKGxvdXZhaW5iX291dGNvbWVfZGYpICU+JQogIG11dGF0ZShGRFIgPSBGUC8oVFArRlApKSAlPiUKICBtdXRhdGUoVFBSPWlmZWxzZShpcy5uYW4oVFBSKSwgMCwgVFBSKSwKICAgICAgICAgRlBSPWlmZWxzZShpcy5uYW4oRlBSKSwgMCwgRlBSKSwKICAgICAgICAgIEZEUj1pZmVsc2UoaXMubmFuKEZEUiksIDAsIEZEUiksCiAgICAgICAgIFByZWNpc2lvbj1pZmVsc2UoaXMubmFuKFByZWNpc2lvbiksIDAsIFByZWNpc2lvbikpIAptZXRyaWM9J1RQUicKcGxfbGVmdDwtIHBsX2RmICU+JQogIHJlbmFtZShtZXRyaWM9bWV0cmljKSAlPiUKICBncm91cF9ieShtZXRob2QsIERBX3RocmVzaCwgYmF0Y2hFZmZlY3QsIGVucikgJT4lCiAgc3VtbWFyaXNlKG1lYW5fbWV0cmljPW1lYW4obWV0cmljKSwgCiAgICAgICAgICAgIHNkX21ldHJpYz1zZChtZXRyaWMpKSAlPiUKICBtdXRhdGUoZ3JvdXA9cGFzdGUobWV0aG9kLCBlbnIpKSAlPiUKICBmaWx0ZXIobWV0aG9kICE9ICJtaWxvIiAmIG1ldGhvZCAhPSAibG91dmFpbiIpICU+JQogIGdncGxvdChhZXMoYXMubnVtZXJpYyhiYXRjaEVmZmVjdCksIG1lYW5fbWV0cmljLCBjb2xvcj1tZXRob2QpKSArCiAgICBnZW9tX2xpbmUoKSArCiAgZ2VvbV9yaWJib24oYWVzKHltaW49bWVhbl9tZXRyaWMtc2RfbWV0cmljLCB5bWF4PW1lYW5fbWV0cmljK3NkX21ldHJpYywgZmlsbD1tZXRob2QpLCBhbHBoYT0wLjIsIGNvbG9yPU5BKSArCiAgZ2VvbV9wb2ludChzaXplPTMpICsKICBmYWNldF9ncmlkKGVucn4uLCBsYWJlbGxlcj0ibGFiZWxfYm90aCIpICsKICB4bGFiKCJCYXRjaCBlZmZlY3QgbWFnbml0dWRlIikgKwogICAgeWxhYihwYXN0ZSgibWVhbiIsIG1ldHJpYykpICsKICAgIHRoZW1lX2J3KGJhc2Vfc2l6ZT0xNikgKwogICAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IG1ldGhvZF9jb2xvcnMsIGxhYmVscz1zZXROYW1lcyhtZXRob2RfbGFiZWxzLCBtZXRob2RfbmFtZXMpKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gbWV0aG9kX2NvbG9ycywgbGFiZWxzPXNldE5hbWVzKG1ldGhvZF9sYWJlbHMsIG1ldGhvZF9uYW1lcykpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjgsIGxpbmV0eXBlPTIpIAoKbWV0cmljID0gIkZEUiIKcGxfcmlnaHQgPC0gcGxfZGYgJT4lCiAgcmVuYW1lKG1ldHJpYz1tZXRyaWMpICU+JQogIGdyb3VwX2J5KG1ldGhvZCwgREFfdGhyZXNoLCBiYXRjaEVmZmVjdCwgZW5yKSAlPiUKICBzdW1tYXJpc2UobWVhbl9tZXRyaWM9bWVhbihtZXRyaWMpLCAKICAgICAgICAgICAgc2RfbWV0cmljPXNkKG1ldHJpYykpICU+JQogIG11dGF0ZShncm91cD1wYXN0ZShtZXRob2QsIGVucikpICU+JQogIGZpbHRlcihtZXRob2QgIT0gIm1pbG8iICYgbWV0aG9kICE9ICJsb3V2YWluIikgJT4lCiAgZ2dwbG90KGFlcyhhcy5udW1lcmljKGJhdGNoRWZmZWN0KSwgbWVhbl9tZXRyaWMsIGNvbG9yPW1ldGhvZCkpICsKICBnZW9tX2xpbmUoKSArCiAgZ2VvbV9yaWJib24oYWVzKHltaW49bWVhbl9tZXRyaWMtc2RfbWV0cmljLCB5bWF4PW1lYW5fbWV0cmljK3NkX21ldHJpYywgZmlsbD1tZXRob2QpLCBhbHBoYT0wLjIsIGNvbG9yPU5BKSArCiAgZ2VvbV9wb2ludChzaXplPTMpICsKICAjIGdlb21fc21vb3RoKCkgKwogIGZhY2V0X2dyaWQoZW5yfi4sIGxhYmVsbGVyPSJsYWJlbF9ib3RoIikgKwogIHhsYWIoIkJhdGNoIGVmZmVjdCBtYWduaXR1ZGUiKSArCiAgICB5bGFiKHBhc3RlKCJtZWFuIiwgbWV0cmljKSkgKwogICAgdGhlbWVfYncoYmFzZV9zaXplPTE2KSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC4xLCBsaW5ldHlwZT0yKSArCiAgICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gbWV0aG9kX2NvbG9ycywgbGFiZWxzPXNldE5hbWVzKG1ldGhvZF9sYWJlbHMsIG1ldGhvZF9uYW1lcykpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBtZXRob2RfY29sb3JzLCBsYWJlbHM9c2V0TmFtZXMobWV0aG9kX2xhYmVscywgbWV0aG9kX25hbWVzKSkgCgpwbF9sZWZ0ICsgcGxfcmlnaHQgKyBwbG90X2xheW91dChndWlkZXM9ImNvbGxlY3QiKSArCiAgZ2dzYXZlKHBhc3RlMChmaWdkaXIsICJiYXRjaEVmZmVjdF9saW5lYXIucG5nIiksIGhlaWdodCA9IDcsIHdpZHRoID0gMTApIApgYGAKClZpc3VhbGl6ZSBvdXRjb21lIGluIFVNQVAKCmBgYHtyLCBmaWcud2lkdGg9MTYsIGZpZy5oZWlnaHQ9NX0KcmVhZF9pbnB1dF9kYXRhIDwtIGZ1bmN0aW9uKGVtYnJ5b19zY2UsIGluZGlyLCBwb3AsIGVuciwgc2VlZCwgYmF0Y2hFZmZlY3QsIHJ1bl91bWFwPVRSVUUpewogIHBjYV9maWxlIDwtIGxpc3QuZmlsZXMoaW5kaXIsIHBhdHRlcm49cGFzdGUwKHBvcCwiLisiLCAiZW5yIixlbnIsIi4rIiwnc2VlZCcsIHNlZWQsICcuK2JhdGNoRWZmZWN0JyxiYXRjaEVmZmVjdCwiLnBjYS5jc3YiKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwubmFtZXMgPSBUUlVFKQogIGNvbGRhdGFfZmlsZSA8LSBsaXN0LmZpbGVzKGluZGlyLCBwYXR0ZXJuPXBhc3RlMChwb3AsIi4rIiwgImVuciIsZW5yLCIuKyIsJ3NlZWQnLCBzZWVkLCIuY29sZGF0YS5jc3YiKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwubmFtZXMgPSBUUlVFKQogIGNvbERhdGEoZW1icnlvX3NjZSkgPC0gcmVhZF9jc3YoY29sZGF0YV9maWxlKSAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCkgJT4lIERhdGFGcmFtZSgpCiAgcmVkdWNlZERpbShlbWJyeW9fc2NlLCAicGNhX2JhdGNoIikgPC0gcmVhZF9jc3YocGNhX2ZpbGUpICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoKSAlPiUgYXMubWF0cml4KCkKICBpZiAocnVuX3VtYXApIHsKICAgIGVtYnJ5b19zY2UgPC0gcnVuVU1BUChlbWJyeW9fc2NlLCBkaW1yZWQ9InBjYV9iYXRjaCIsIG5hbWUgPSAndW1hcF9iYXRjaCcsIG5fZGltcmVkPTE6MzApICAKICB9CiAgZW1icnlvX3NjZQp9CgpwbG90X291dGNvbWVfdW1hcCA8LSBmdW5jdGlvbihzY2UsIG1ldGhvZCwgcG9wLCBlbnIsIHNlZWQsIGJhdGNoRWZmZWN0LCB0cnVlPUZBTFNFLCBkYXRhX2lkPSJlbWJyeW8iLCByYXN0ZXJpemU9RkFMU0UpewogIGNvbGRhdGFfZmlsZSA8LSBsaXN0LmZpbGVzKGluZGlyLCBwYXR0ZXJuPXBhc3RlMCgiLisiLGRhdGFfaWQsIi4rIiwgIHBvcCwiX2VuciIsZW5yLCJfc2VlZCIsIHNlZWQsICIuY29sZGF0YS5jc3YiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbC5uYW1lcyA9IFRSVUUpCiAgY29sRGF0YShzY2UpIDwtIHJlYWRfY3N2KGNvbGRhdGFfZmlsZSkgJT4lIGNvbHVtbl90b19yb3duYW1lcygpICU+JSBEYXRhRnJhbWUoKQogIAogIHJlc19maWxlIDwtIGxpc3QuZmlsZXMob3V0ZGlyLCAKICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm49IHBhc3RlMCgiLisiLGRhdGFfaWQsIi4rIiwgcG9wLCJfZW5yIixlbnIsIl9zZWVkIiwgc2VlZCwgJy4rYmF0Y2hFZmZlY3QnLGJhdGNoRWZmZWN0LCIuREFyZXN1bHRzLiIsbWV0aG9kLCIuY3N2IiksCiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsLm5hbWVzID0gVFJVRSkKICBpZiAobWV0aG9kPT0ibWVsZCIpIHsKICAgIHNjZSRwcmVkaWN0ZWQgPC0gaWZlbHNlKHJlYWRfY3N2KHJlc19maWxlKVtbIkNvbmRpdGlvbjIiXV0gPCAwLjMsICJOZWdMRkMiLCAnTm90REEnKSAgCiAgfSBlbHNlIGlmIChtZXRob2Q9PSJkYXNlcSIpIHsKICAgIHNjZSRwcmVkaWN0ZWQgPC0gaWZlbHNlKHJlYWRfY3N2KHJlc19maWxlKVtbInByZWQiXV0gPT0gIk5lZ0xGQyIsICdQb3NMRkMnLCBpZmVsc2UocmVhZF9jc3YocmVzX2ZpbGUpW1sicHJlZCJdXSA9PSAiUG9zTEZDIiwgIk5lZ0xGQyIsICJOb3REQSIpKQogIH0gZWxzZSB7CiAgICBzY2UkcHJlZGljdGVkIDwtIHJlYWRfY3N2KHJlc19maWxlKVtbInByZWQiXV0KICB9CiAgaWYgKHRydWUpIHsKICAgIHBsIDwtIGRhdGEuZnJhbWUocmVkdWNlZERpbShzY2UsICJ1bWFwX2JhdGNoIikpICU+JQogICAgcmVuYW1lKFVNQVAxPVgxLCBVTUFQMj1YMikgJT4lCiAgICBtdXRhdGUodHJ1ZT1zY2UkQ29uZGl0aW9uMV9wcm9iKSAlPiUKICAgIGFycmFuZ2UodHJ1ZSkgJT4lCiAgICBnZ3Bsb3QoYWVzKFVNQVAxLCBVTUFQMiwgY29sb3I9dHJ1ZSkpICsgCiAgICBnZW9tX3BvaW50KHNpemU9MC4xKSArCiAgICAgIHNjYWxlX2NvbG9yX3ZpcmlkaXNfYyhuYW1lPSJDMSBwcm9iYWJpbGl0eSIsIGxpbWl0cz1jKDAuNSwwLjkpKSArCiAgICAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemU9MTgpICsKICAgICAgZ3VpZGVzKGNvbG9yPWd1aWRlX2NvbG9yYmFyKHRpdGxlLnBvc2l0aW9uPSJ0b3AiLCB0aXRsZS5oanVzdCA9IDAuNSkpICsKICAgICB0aGVtZShheGlzLnRpY2tzID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIikgKwogICAgIHhsYWIoIlVNQVAxIikgKyB5bGFiKCJVTUFQMiIpIAogIH0gZWxzZSB7CiAgICBwbCA8LSBkYXRhLmZyYW1lKHJlZHVjZWREaW0oc2NlLCAidW1hcF9iYXRjaCIpKSAlPiUKICAgIHJlbmFtZShVTUFQMT1YMSwgVU1BUDI9WDIpICU+JQogICAgbXV0YXRlKG1ldGhvZD1tZXRob2QpICU+JQogICAgbXV0YXRlKHByZWRpY3RlZD1mYWN0b3Ioc2NlJHByZWRpY3RlZCwgbGV2ZWxzPWMoIk5lZ0xGQyIsICJQb3NMRkMiLCAnTm90REEnKSkpICU+JQogICAgYXJyYW5nZSgtIHByZWRpY3RlZCkgJT4lCiAgICBnZ3Bsb3QoYWVzKFVNQVAxLCBVTUFQMiwgY29sb3I9cHJlZGljdGVkKSkgKyAKICAgIGdlb21fcG9pbnQoc2l6ZT0wLjEpICsKICAgIGdlb21fcG9pbnQoZGF0YT0gLiAlPiUgZmlsdGVyKHByZWRpY3RlZCE9Ik5vdERBIiksIHNpemU9MC4yKSArCiAgICAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcz1jKE5lZ0xGQz0icmVkIiwgTm90REE9ImdyZXkiLCBQb3NMRkM9ImJsdWUiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscz1jKE5lZ0xGQz0iRW5yaWNoZWQgaW4gQzEiLCBOb3REQT0iTm8gREEiLCBQb3NMRkM9IkRlcGxldGVkIGluIEMxIiksIG5hbWU9JycpICsKICAgICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQob3ZlcnJpZGUuYWVzID0gbGlzdChzaXplPTEpKSkgKwogICAgIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplPTE4KSArCiAgICAgdGhlbWUobGVnZW5kLnBvc2l0aW9uPWMoLjE1LC4yKSwgYXhpcy50aWNrcyA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCkpICsKICAgICB4bGFiKCJVTUFQMSIpICsgeWxhYigiVU1BUDIiKSArCiAgICAgIGZhY2V0X3dyYXAobWV0aG9kfi4pICAKICB9CiAgaWYgKHJhc3Rlcml6ZSkgewogICAgcGwgPC0gcGwgKyByYXN0ZXJpemUoZ2VvbV9wb2ludChzaXplPTAuMSksIGRwaSA9IDMwMCkKICB9CiAgcGwKfQoKcG9wPSJFcnl0aHJvaWQyIgplbnI9JzAuNycKc2VlZD0nNDMnCmJhdGNoRWZmZWN0PScwJwppbmRpciA8LSAifi9kYXRhL21pbG9fYmVuY2htYXJrL3N5bnRoZXRpY19kYXRhLyIKCnNjZSA8LSByZWFkX2lucHV0X2RhdGEoZW1icnlvX3NjZSwgaW5kaXI9aW5kaXIsIHBvcD1wb3AsIGVucj1lbnIsIHNlZWQ9c2VlZCwgYmF0Y2hFZmZlY3Q9YmF0Y2hFZmZlY3QpCgpwbF9scyA8LSBsYXBwbHkoYygibWVsZCIsICJtaWxvIiwgImxvdXZhaW4iLCAiZGFzZXEiKSwgZnVuY3Rpb24oeCkgcGxvdF9vdXRjb21lX3VtYXAoc2NlLCB4LCBwb3AsIGVuciwgc2VlZCwgYmF0Y2hFZmZlY3QsIHRydWU9RkFMU0UpKQpwbF90cnVlIDwtIHBsb3Rfb3V0Y29tZV91bWFwKHNjZSwgJ21pbG8nLCBwb3AsIGVuciwgc2VlZCwgYmF0Y2hFZmZlY3QsIHRydWU9VFJVRSkKcGxfdHJ1ZSArIAogIHdyYXBfcGxvdHMocGxfbHMsIG5yb3cgPSAxLCBndWlkZXMgPSAiY29sbGVjdCIpICsKICBwbG90X2xheW91dCh3aWR0aHMgPSBjKDEsNCkpCmBgYAoKUGxvdCBiZW5jaG1hcmsgZGVzaWduCgpgYGB7ciwgZmlnLmhlaWdodD00LCBmaWcud2lkdGg9MTN9CnNjZSA8LSByZWFkX2lucHV0X2RhdGEoZW1icnlvX3NjZSA9IGVtYnJ5b19zY2UsIGluZGlyPWluZGlyLCBwb3A9Ik1lc2VuY2h5bWUiLCBlbnI9MC45LCBzZWVkPTQ0LCBiYXRjaEVmZmVjdD0wLCBydW5fdW1hcCA9IEZBTFNFKQp1bWFwX2JhdGhfZGYgPC0gZGF0YS5mcmFtZShyZWR1Y2VkRGltKHNjZSwgInVtYXBfYmF0Y2giKSkgCgpwMSA8LSB1bWFwX2JhdGhfZGYgJT4lCiAgICByZW5hbWUoVU1BUDE9WDEsIFVNQVAyPVgyKSAlPiUKICAgIGdncGxvdChhZXMoVU1BUDEsIFVNQVAyKSkgKyAKICAgIGdlb21fcG9pbnQoc2l6ZT0wLjEsIGNvbG9yPSJncmV5IikgKwogICAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemU9MTYpICsKICAgICAgZ3VpZGVzKGNvbG9yPWd1aWRlX2NvbG9yYmFyKHRpdGxlLnBvc2l0aW9uPSJ0b3AiLCB0aXRsZS5oanVzdCA9IDAuNSkpICsKICAgICB0aGVtZShheGlzLnRpY2tzID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIikgKwogICAgIHhsYWIoIlVNQVAxIikgKyB5bGFiKCJVTUFQMiIpICsKICAgIHJhc3Rlcml6ZShnZW9tX3BvaW50KHNpemU9MC4xLCAgY29sb3I9ImdyZXkiKSwgZHBpID0gMzAwKQoKcDIgPC0gdW1hcF9iYXRoX2RmICU+JQogICAgcmVuYW1lKFVNQVAxPVgxLCBVTUFQMj1YMikgJT4lCiAgICBtdXRhdGUodHJ1ZT1zY2UkQ29uZGl0aW9uMV9wcm9iKSAlPiUKICAgIG11dGF0ZSh0cnVlPWlmZWxzZSh0cnVlIDwgMC41LCAwLjUsIHRydWUpKSAlPiUKICAgIGFycmFuZ2UodHJ1ZSkgJT4lCiAgICBnZ3Bsb3QoYWVzKFVNQVAxLCBVTUFQMiwgY29sb3I9dHJ1ZSkpICsgCiAgICBnZW9tX3BvaW50KHNpemU9MC4xKSArCiAgICAgIHNjYWxlX2NvbG9yX3ZpcmlkaXNfYyhuYW1lPSJDMSBwcm9iYWJpbGl0eSIpICsKICAgIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplPTE0KSArCiAgICAgIGd1aWRlcyhjb2xvcj1ndWlkZV9jb2xvcmJhcih0aXRsZS5wb3NpdGlvbj0ibGVmdCIsIHRpdGxlLmhqdXN0ID0gMSwgdGl0bGUudmp1c3QgPSAxLCBiYXJ3aWR0aCA9IDAuNSwgYmFyaGVpZ2h0ID0gMykpICsKICAgICB0aGVtZShheGlzLnRpY2tzID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgICAgIGF4aXMudGV4dCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSBjKDAuNzUsMC44NSksIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpKSArCiAgICAgeGxhYigiVU1BUDEiKSArIHlsYWIoIlVNQVAyIikgKwogIHJhc3Rlcml6ZShnZW9tX3BvaW50KHNpemU9MC4xKSwgZHBpID0gMzAwKQoKcDMgPC0gdW1hcF9iYXRoX2RmICU+JQogICAgcmVuYW1lKFVNQVAxPVgxLCBVTUFQMj1YMikgJT4lCiAgICBtdXRhdGUodHJ1ZV9sYWJlbHM9c2NlJHN5bnRoX2xhYmVscykgJT4lCiAgICBnZ3Bsb3QoYWVzKFVNQVAxLCBVTUFQMiwgY29sb3I9dHJ1ZV9sYWJlbHMpKSArIAogICAgZ2VvbV9wb2ludChzaXplPTAuMSkgKwogICAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGU9IlNldDEiLCBsYWJlbHM9YyhDb25kaXRpb24xPSdDMScsIENvbmRpdGlvbjI9IkMyIiksIG5hbWU9IiIpICsKICAgIHRoZW1lX2NsYXNzaWMoYmFzZV9zaXplPTE2KSArCiAgICAgZ3VpZGVzKGNvbG9yPWd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemU9MikpKSArCiAgICAgdGhlbWUoYXhpcy50aWNrcyA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gYygwLjg1LDAuOTUpLCBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSkgKwogICAgIHhsYWIoIlVNQVAxIikgKyB5bGFiKCJVTUFQMiIpICsKICByYXN0ZXJpemUoZ2VvbV9wb2ludChzaXplPTAuMSksIGRwaSA9IDMwMCkKCihwMSArIHAyICsgcDMpIAoKYGBgCgpEZXNpZ24gbWF0cml4CmBgYHtyLCBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD0xM30KZGVzX3BsIDwtIGRhdGEuZnJhbWUoY29sRGF0YShzY2UpWyxjKCJzeW50aF9sYWJlbHMiLCAic3ludGhfc2FtcGxlcyIpXSkgJT4lCiAgZGlzdGluY3Qoc3ludGhfbGFiZWxzLHN5bnRoX3NhbXBsZXMpICU+JQogIG11dGF0ZShzeW50aF9sYWJlbHM9c3RyX3JlbW92ZShzeW50aF9sYWJlbHMsIm9uZGl0aW9uIiksCiAgICAgICAgIGNvdW50PTEpICU+JQogIHBpdm90X3dpZGVyKGlkX2NvbHMgPSBzeW50aF9zYW1wbGVzLCBuYW1lc19mcm9tPXN5bnRoX2xhYmVscywgdmFsdWVzX2Zyb209Y291bnQsdmFsdWVzX2ZpbGw9MCkgJT4lCiAgcGl2b3RfbG9uZ2VyKGNvbHM9YyhDMSwgQzIpLCBuYW1lc190bz0ic3ludGhfbGFiZWxzIikgJT4lCiAgZ2dwbG90KGFlcyhzeW50aF9sYWJlbHMsIHN5bnRoX3NhbXBsZXMpKSArCiAgZ2VvbV90aWxlKGZpbGw9IndoaXRlIiwgY29sb3I9ImJsYWNrIiwgc2l6ZT0xKSArCiAgZ2VvbV90aWxlKGRhdGE9LiAlPiUgZmlsdGVyKHZhbHVlPjApLCBhZXMoZmlsbD1zeW50aF9sYWJlbHMpLCBjb2xvcj0iYmxhY2siLCBzaXplPTEpICsKICB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZT0xNikgICArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iU2V0MSIpICsKICBndWlkZXMoZmlsbD0nbm9uZScpICsKICB4bGFiKCJTeW50aGV0aWMgXG5jb25kaXRpb24iKSArIHlsYWIoJ1N5bnRoZXRpYyBzYW1wbGVzJykgKwogIHRoZW1lKGF4aXMudGV4dC55ID0gZWxlbWVudF9ibGFuaygpLGF4aXMudGlja3MueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLmxpbmUgPSBlbGVtZW50X2JsYW5rKCkpCgoocDEgKyBwMiArIHAzKSArIGRlc19wbCArCiAgcGxvdF9sYXlvdXQod2lkdGhzPWMoMSwxLDEsMC4yKSwgbmNvbD00KSArCiAgZ2dzYXZlKHBhc3RlMChmaWdkaXIsICJibV9leGFtcGxlLnBuZyIpLCBoZWlnaHQgPSA0LCB3aWR0aCA9IDEyKQpgYGAKCgoKYGBge3IsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTh9CnBvcHMgPC0gc2FtcGxlKHVuaXF1ZShvdXRjb21lX2RmJHBvcCksIDMpCgpwMSA8LSBsYXBwbHkocG9wcywgZnVuY3Rpb24ocCkgcGxvdF9vdXRjb21lX3VtYXAoc2NlLCAnbWlsbycsIHAsIDAuNywgc2VlZCwgYmF0Y2hFZmZlY3QsIHRydWU9VFJVRSwgcmFzdGVyaXplPVRSVUUpKQpwMiA8LSBsYXBwbHkocG9wcywgZnVuY3Rpb24ocCkgcGxvdF9vdXRjb21lX3VtYXAoc2NlLCAnbWlsbycsIHAsIDAuOCwgc2VlZCwgYmF0Y2hFZmZlY3QsIHRydWU9VFJVRSwgcmFzdGVyaXplPVRSVUUpKQpwMyA8LSBsYXBwbHkocG9wcywgZnVuY3Rpb24ocCkgcGxvdF9vdXRjb21lX3VtYXAoc2NlLCAnbWlsbycsIHAsIDAuOSwgc2VlZCwgYmF0Y2hFZmZlY3QsIHRydWU9VFJVRSwgcmFzdGVyaXplPVRSVUUpKQoKZmlnIDwtICh3cmFwX3Bsb3RzKHAxKSAvCiAgd3JhcF9wbG90cyhwMikgLwogIHdyYXBfcGxvdHMocDMpKSArCiAgcGxvdF9sYXlvdXQoZ3VpZGVzPSJjb2xsZWN0IikgJgogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpIAoKZmlnICsKICBnZ3NhdmUocGFzdGUwKGZpZ2RpciwgImJtX2Rlc2lnbl9VTUFQcy5wbmciKSwgaGVpZ2h0ID0gOCwgd2lkdGggPSAxMCkKYGBgCgoKClBsb3QgYmF0Y2ggZWZmZWN0CgpgYGB7ciwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTV9CmxpYnJhcnkoZ2dyYXN0cikKYmVfc2NlX2xzIDwtIGxhcHBseShjKCcwJywiMC4yNSIsICIwLjUiLCAiMC43NSIsICIxIiksIGZ1bmN0aW9uKHgpIHJlYWRfaW5wdXRfZGF0YShlbWJyeW9fc2NlLCBpbmRpciwgcG9wLCBlbnIsIHNlZWQsIHgpKQoKbWV0aG9kPSJtaWxvIgoKIyMgUGxvdCBjb25kaXRpb24gcHJvYmFiaWxpdHkgCmJlX3BsX2xzIDwtIGxhcHBseShiZV9zY2VfbHMsIGZ1bmN0aW9uKHgpIHBsb3Rfb3V0Y29tZV91bWFwKHgsIG1ldGhvZCwgcG9wLCBlbnIsIHNlZWQsIGJhdGNoRWZmZWN0LCB0cnVlPVRSVUUpKQoKIyMgUGxvdCBiYXRjaApiZV9wbF9sczIgPC0gbGFwcGx5KGJlX3NjZV9scywgZnVuY3Rpb24oc2NlKSB7CiAgY29sZGF0YV9maWxlIDwtIGxpc3QuZmlsZXMoaW5kaXIsIHBhdHRlcm49cGFzdGUwKHBvcCwiLisiLCAiZW5yIixlbnIsIi4rIiwnc2VlZCcsIHNlZWQsICIuY29sZGF0YS5jc3YiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbC5uYW1lcyA9IFRSVUUpCiAgY29sRGF0YShzY2UpIDwtIERhdGFGcmFtZShyZWFkX2Nzdihjb2xkYXRhX2ZpbGUpICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoKSkKICBkYXRhLmZyYW1lKHJlZHVjZWREaW0oc2NlLCAidW1hcF9iYXRjaCIpKSAlPiUKICAgIHJlbmFtZShVTUFQMT1YMSwgVU1BUDI9WDIpICU+JQogICAgbXV0YXRlKHRydWU9c2NlJHN5bnRoX2JhdGNoZXMpICU+JQogICAgZ2dwbG90KGFlcyhVTUFQMSwgVU1BUDIsIGNvbG9yPXRydWUpKSArCiAgICBnZW9tX3BvaW50KHNpemU9MC4xKSArCiAgICBzY2FsZV9jb2xvcl92aXJpZGlzX2QobmFtZT0iQmF0Y2giLCBvcHRpb249ImNpdmlkaXMiKSArCiAgICAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemU9MTgpICsKICAgICAgZ3VpZGVzKGNvbG9yPWd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemU9MikpKSArCiAgICAgdGhlbWUoYXhpcy50aWNrcyA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCkpICsKICAgICB4bGFiKCJVTUFQMSIpICsgeWxhYigiVU1BUDIiKSArCiAgICAgIHJhc3Rlcml6ZShnZW9tX3BvaW50KHNpemU9MC4xKSwgZHBpID0gMzAwKQogIH0KKQogICAgCnB0b3AgPC0gd3JhcF9wbG90cyhiZV9wbF9scywgbnJvdz0xLCBndWlkZXM9ImNvbGxlY3QiKSAmCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInJpZ2h0IikgCnBib3R0b20gPC0gd3JhcF9wbG90cyhiZV9wbF9sczIsIG5yb3c9MSwgZ3VpZGVzPSJjb2xsZWN0IikKCihwdG9wIC8gcGJvdHRvbSkgKwogIGdnc2F2ZShwYXN0ZTAoZmlnZGlyLCAiYmF0Y2hFZmZlY3RfVU1BUHMucGRmIiksIGhlaWdodD02LCB3aWR0aCA9IDEzKQpgYGAKCkRlc2lnbiBtYXRyaXggdyBiYXRjaCBlZmZlY3QKCmBgYHtyLCBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD0zfQptMSA8LSBkYXRhLmZyYW1lKGNvbERhdGEoc2NlKVssYygic3ludGhfbGFiZWxzIiwgInN5bnRoX3NhbXBsZXMiLCAnc3ludGhfYmF0Y2hlcycpXSkgJT4lCiAgZGlzdGluY3Qoc3ludGhfbGFiZWxzLHN5bnRoX3NhbXBsZXMpICU+JQogIG11dGF0ZShzeW50aF9sYWJlbHM9c3RyX3JlbW92ZShzeW50aF9sYWJlbHMsIm9uZGl0aW9uIiksCiAgICAgICAgIGNvdW50PTEpICU+JQogIHBpdm90X3dpZGVyKGlkX2NvbHMgPSBzeW50aF9zYW1wbGVzLCBuYW1lc19mcm9tPXN5bnRoX2xhYmVscywgdmFsdWVzX2Zyb209Y291bnQsdmFsdWVzX2ZpbGw9MCkgJT4lCiAgcGl2b3RfbG9uZ2VyKGNvbHM9YyhDMSwgQzIpLCBuYW1lc190bz0ic3ludGhfbGFiZWxzIikgJT4lCiAgZ2dwbG90KGFlcyhzeW50aF9sYWJlbHMsIHN5bnRoX3NhbXBsZXMpKSArCiAgZ2VvbV90aWxlKGZpbGw9IndoaXRlIiwgY29sb3I9ImJsYWNrIiwgc2l6ZT0xKSArCiAgZ2VvbV90aWxlKGRhdGE9LiAlPiUgZmlsdGVyKHZhbHVlPjApLCBhZXMoZmlsbD1zeW50aF9sYWJlbHMpLCBjb2xvcj0iYmxhY2siLCBzaXplPTEpICsKICB0aGVtZV9jbGFzc2ljKGJhc2Vfc2l6ZT0xNikgICArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iU2V0MSIpICsKICBndWlkZXMoZmlsbD0nbm9uZScpICsKICB4bGFiKCJTeW50aGV0aWMgXG5jb25kaXRpb24iKSArIHlsYWIoJ1N5bnRoZXRpYyBzYW1wbGVzJykgKwogIHRoZW1lKGF4aXMudGV4dC55ID0gZWxlbWVudF9ibGFuaygpLGF4aXMudGlja3MueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLmxpbmUgPSBlbGVtZW50X2JsYW5rKCkpCgptMiA8LSBkYXRhLmZyYW1lKGNvbERhdGEoc2NlKVssYygic3ludGhfbGFiZWxzIiwgInN5bnRoX3NhbXBsZXMiLCAnc3ludGhfYmF0Y2hlcycpXSkgJT4lCiAgZGlzdGluY3Qoc3ludGhfbGFiZWxzLHN5bnRoX3NhbXBsZXMsIHN5bnRoX2JhdGNoZXMpICU+JQogIG11dGF0ZShzeW50aF9sYWJlbHM9c3RyX3JlbW92ZShzeW50aF9sYWJlbHMsIm9uZGl0aW9uIiksCiAgICAgICAgIGNvdW50PTEpICU+JQogIHBpdm90X3dpZGVyKGlkX2NvbHMgPSBzeW50aF9zYW1wbGVzLCBuYW1lc19mcm9tPXN5bnRoX2JhdGNoZXMsIHZhbHVlc19mcm9tPWNvdW50LHZhbHVlc19maWxsPTApICU+JQogIHBpdm90X2xvbmdlcihjb2xzPWMoQjEsIEIyKSwgbmFtZXNfdG89InN5bnRoX2JhdGNoZXMiKSAlPiUKICBnZ3Bsb3QoYWVzKHN5bnRoX2JhdGNoZXMsIHN5bnRoX3NhbXBsZXMpKSArCiAgZ2VvbV90aWxlKGZpbGw9IndoaXRlIiwgY29sb3I9ImJsYWNrIiwgc2l6ZT0xKSArCiAgZ2VvbV90aWxlKGRhdGE9LiAlPiUgZmlsdGVyKHZhbHVlPjApLCBhZXMoZmlsbD1zeW50aF9iYXRjaGVzKSwgY29sb3I9ImJsYWNrIiwgc2l6ZT0xKSArCiAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemU9MTYpICAgKwogIHNjYWxlX2ZpbGxfdmlyaWRpc19kKG9wdGlvbj0iY2l2aWRpcyIpICsKICBndWlkZXMoZmlsbD0nbm9uZScpICsKICB4bGFiKCJTeW50aGV0aWMgXG5iYXRjaCIpICsgeWxhYignU3ludGhldGljIHNhbXBsZXMnKSArCiAgdGhlbWUoYXhpcy50ZXh0LnkgPSBlbGVtZW50X2JsYW5rKCksYXhpcy50aWNrcy55ID0gZWxlbWVudF9ibGFuaygpLCBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy5saW5lID0gZWxlbWVudF9ibGFuaygpKQoKKG0xICsgbTIpICsKIyAocDEgKyBwMiArIHAzKSArIGRlc19wbCArCiAgcGxvdF9sYXlvdXQod2lkdGhzPWMoMSwxKSwgbmNvbD0yKSArCiAgZ2dzYXZlKHBhc3RlMChmaWdkaXIsICJibV9kZXNpZ25fYmF0Y2gucG5nIiksIGhlaWdodCA9IDQsIHdpZHRoID0gNCkKYGBgCgo8IS0tIGBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xNH0gLS0+CjwhLS0gb3V0Y29tZV9kZiAlPiUgLS0+CjwhLS0gICBtdXRhdGUoRkRSID0gRlAvKFRQK0ZQKSkgJT4lIC0tPgo8IS0tICAgbXV0YXRlKFRQUj1pZmVsc2UoaXMubmFuKFRQUiksIDAsIFRQUiksIC0tPgo8IS0tICAgICAgICAgIEZQUj1pZmVsc2UoaXMubmFuKEZQUiksIDAsIEZQUiksIC0tPgo8IS0tICAgICAgICAgIFByZWNpc2lvbj1pZmVsc2UoaXMubmFuKFByZWNpc2lvbiksIDAsIFByZWNpc2lvbikpICU+JSAtLT4KPCEtLSAgIGdyb3VwX2J5KG1ldGhvZCwgREFfdGhyZXNoLCBiYXRjaEVmZmVjdCkgJT4lIC0tPgo8IS0tICAgc3VtbWFyaXNlKG1lYW5fRkRSPW1lYW4oRkRSKSwgIC0tPgo8IS0tICAgICAgICAgICAgIHNkX0ZEUj1zZChGRFIpL3NxcnQobigpKSwgLS0+CjwhLS0gICAgICAgICAgICAgbWVhbl9UUFI9bWVhbihUUFIpLCAgLS0+CjwhLS0gICAgICAgICAgICAgc2RfVFBSPXNkKFRQUikvc3FydChuKCkpKSAlPiUgLS0+CjwhLS0gICBnZ3Bsb3QoYWVzKERBX3RocmVzaCwgYmF0Y2hFZmZlY3QpKSArIC0tPgo8IS0tICAgZ2VvbV90aWxlKGFlcyhmaWxsPW1lYW5fVFBSKSkgKyAtLT4KPCEtLSAgIHNjYWxlX2ZpbGxfdmlyaWRpc19jKCkgKyAtLT4KPCEtLSAgIGZhY2V0X3dyYXAobWV0aG9kfi4sIG5jb2w9MikgKyAtLT4KPCEtLSAgIHRoZW1lX2J3KGJhc2Vfc2l6ZT0xNikgKyAtLT4KCjwhLS0gb3V0Y29tZV9kZiAlPiUgLS0+CjwhLS0gICBtdXRhdGUoRkRSID0gRlAvKFRQK0ZQKSkgJT4lIC0tPgo8IS0tICAgbXV0YXRlKFRQUj1pZmVsc2UoaXMubmFuKFRQUiksIDAsIFRQUiksIC0tPgo8IS0tICAgICAgICAgIEZQUj1pZmVsc2UoaXMubmFuKEZQUiksIDAsIEZQUiksIC0tPgo8IS0tICAgICAgICAgIEZEUj1pZmVsc2UoaXMubmFuKEZEUiksIDAsIEZEUiksIC0tPgo8IS0tICAgICAgICAgIFByZWNpc2lvbj1pZmVsc2UoaXMubmFuKFByZWNpc2lvbiksIDAsIFByZWNpc2lvbikpICU+JSAtLT4KPCEtLSAgIGdyb3VwX2J5KG1ldGhvZCwgREFfdGhyZXNoLCBiYXRjaEVmZmVjdCkgJT4lIC0tPgo8IS0tICAgc3VtbWFyaXNlKG1lYW5fRkRSPW1lYW4oRkRSKSwgIC0tPgo8IS0tICAgICAgICAgICAgIHNkX0ZEUj1zZChGRFIpL3NxcnQobigpKSwgLS0+CjwhLS0gICAgICAgICAgICAgbWVhbl9UUFI9bWVhbihUUFIpLCAgLS0+CjwhLS0gICAgICAgICAgICAgc2RfVFBSPXNkKFRQUikvc3FydChuKCkpKSAlPiUgLS0+CjwhLS0gICBnZ3Bsb3QoYWVzKERBX3RocmVzaCwgYmF0Y2hFZmZlY3QpKSArIC0tPgo8IS0tICAgZ2VvbV90aWxlKGFlcyhmaWxsPW1lYW5fRkRSKSkgKyAtLT4KPCEtLSAgIHNjYWxlX2ZpbGxfdmlyaWRpc19jKGRpcmVjdGlvbiA9IC0xKSArIC0tPgo8IS0tICAgZmFjZXRfd3JhcChtZXRob2R+LiwgbmNvbD0yKSArIC0tPgo8IS0tICAgdGhlbWVfYncoYmFzZV9zaXplPTE2KSAtLT4KPCEtLSBgYGAgLS0+CgoKIyMgTm9uLWxpbmVhciBiYXRjaCBlZmZlY3QKYGBge3J9CmFkZF9iYXRjaF9lZmZlY3Rfbm9ubGluZWFyIDwtIGZ1bmN0aW9uKHNjZSwgYmF0Y2hfY29sPSJzeW50aF9iYXRjaGVzIiwgdGhldGFfZGVnPTIwLCBkaW1zPTE6Mil7CiAgIyMgU2ltdWxhdGUgcm90YXRpb24gb2YgZmlyc3QgMiBQQ3MKICB0aGV0YT10aGV0YV9kZWcqcGkvMTgwCiAgcm90TT1tYXRyaXgoMCxucm93PTIsbmNvbD0yKQogIHJvdE1bMSxdPWMoY29zKHRoZXRhKSwtc2luKHRoZXRhKSkKICByb3RNWzIsXT1jKHNpbih0aGV0YSksY29zKHRoZXRhKSkKICAKICBjZWxsaWRzX3NhbXBsZSA8LSBzcGxpdChzY2UkY2VsbCwgc2NlW1tiYXRjaF9jb2xdXSkKICBYX3BjYSA8LSByZWR1Y2VkRGltKHNjZSwgInBjYS5jb3JyZWN0ZWQiKQogIFhfcGNhX2JhdGNoIDwtIFhfcGNhCiAgIyMgQXBwbHkgcm90YXRpb24gdG8gb25lIG9mIHRoZSBiYXRjaGVzCiAgWF9wY2FfYmF0Y2hbY2VsbGlkc19zYW1wbGVbW25hbWVzKGNlbGxpZHNfc2FtcGxlKVsxXV1dLGRpbXNdIDwtIHQocm90TSAlKiUgdChYX3BjYV9iYXRjaFtjZWxsaWRzX3NhbXBsZVtbbmFtZXMoY2VsbGlkc19zYW1wbGUpWzFdXV0sZGltc10pKQogIHJlZHVjZWREaW0oc2NlLCAicGNhX2JhdGNoIikgPC0gWF9wY2FfYmF0Y2gKICBzY2UgIAogIH0KCmNvbGRhdGFfZmlsZSA8LSBsaXN0LmZpbGVzKGluZGlyLCBwYXR0ZXJuPXBhc3RlMChwb3AsIi4rIiwgImVuciIsZW5yLCIuKyIsJ3NlZWQnLCBzZWVkLCAiLmNvbGRhdGEuY3N2IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwubmFtZXMgPSBUUlVFKQpjb2xEYXRhKGVtYnJ5b19zY2UpIDwtIHJlYWRfY3N2KGNvbGRhdGFfZmlsZSkgJT4lIGNvbHVtbl90b19yb3duYW1lcygpICU+JSBEYXRhRnJhbWUoKQogIApiYXRjaF9jb2w9InN5bnRoX2JhdGNoZXMiCgplbWJyeW9fc2NlIDwtIGFkZF9iYXRjaF9lZmZlY3Rfbm9ubGluZWFyKGVtYnJ5b19zY2UsIGRpbXM9YygzLDUpLCB0aGV0YV9kZWcgPSAzMCkKZW1icnlvX3NjZSA8LSBydW5VTUFQKGVtYnJ5b19zY2UsIGRpbXJlZD0icGNhX2JhdGNoIiwgbmFtZSA9ICd1bWFwX2JhdGNoJywgbl9kaW1yZWQ9MTozMCkgIAoKZGF0YS5mcmFtZShyZWR1Y2VkRGltKGVtYnJ5b19zY2UsICJ1bWFwX2JhdGNoIikpICU+JQogICAgcmVuYW1lKFVNQVAxPVgxLCBVTUFQMj1YMikgJT4lCiAgICBtdXRhdGUodHJ1ZT1lbWJyeW9fc2NlJHN5bnRoX2JhdGNoZXMpICU+JQogICAgZ2dwbG90KGFlcyhVTUFQMSwgVU1BUDIsIGNvbG9yPXRydWUpKSArCiAgICBnZW9tX3BvaW50KHNpemU9MC4xKSArCiAgICBzY2FsZV9jb2xvcl92aXJpZGlzX2QobmFtZT0iQmF0Y2giLCBvcHRpb249ImNpdmlkaXMiKSArCiAgICAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemU9MTgpICsKICAgICAgZ3VpZGVzKGNvbG9yPWd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemU9MikpKSArCiAgICAgdGhlbWUoYXhpcy50aWNrcyA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCkpICsKICAgICB4bGFiKCJVTUFQMSIpICsgeWxhYigiVU1BUDIiKQoKZGF0YS5mcmFtZShyZWR1Y2VkRGltKGVtYnJ5b19zY2UsICJVTUFQIikpICU+JQogICAgcmVuYW1lKFVNQVAxPVgxLCBVTUFQMj1YMikgJT4lCiAgICBtdXRhdGUodHJ1ZT1lbWJyeW9fc2NlJHN5bnRoX2JhdGNoZXMpICU+JQogICAgZ2dwbG90KGFlcyhVTUFQMSwgVU1BUDIsIGNvbG9yPXRydWUpKSArCiAgICBnZW9tX3BvaW50KHNpemU9MC4xKSArCiAgICBzY2FsZV9jb2xvcl92aXJpZGlzX2QobmFtZT0iQmF0Y2giLCBvcHRpb249ImNpdmlkaXMiKSArCiAgICAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemU9MTgpICsKICAgICAgZ3VpZGVzKGNvbG9yPWd1aWRlX2xlZ2VuZChvdmVycmlkZS5hZXMgPSBsaXN0KHNpemU9MikpKSArCiAgICAgdGhlbWUoYXhpcy50aWNrcyA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICBheGlzLnRleHQgPSBlbGVtZW50X2JsYW5rKCkpICsKICAgICB4bGFiKCJVTUFQMSIpICsgeWxhYigiVU1BUDIiKQoKCiMgYmVfc2NlX2xzIDwtIGxhcHBseShjKCcwJywiMC4yNSIsICIwLjUiLCAiMC43NSIsICIxIiksIGZ1bmN0aW9uKHgpIHJlYWRfaW5wdXRfZGF0YShlbWJyeW9fc2NlLCBpbmRpciwgcG9wLCBlbnIsIHNlZWQsIHgsIHJ1bl91bWFwID0gRkFMU0UpKQoKYGBgCgpNYWtlIG5vbi1saW5lYXIgYmF0Y2ggZWZmZWN0IGZvciBhbGwgcG9wdWxhdGlvbnMKCmBgYHtyfQojIyBTaW11bGF0ZSBiYXRjaCBlZmZlY3RzIG9mIGRpZmZlcmVudCBtYWduaXR1ZGUKc2F2ZV9ub25saW5lYXJfYmUgPC0gZnVuY3Rpb24oc2NlLCBwb3AsIHBvcF9lbnIsIHNlZWQpewogICMjIExvYWQgY29sZGF0YSBhbmQgUENBCiAgb3V0ZGlyIDwtICcvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvc3ludGhldGljX2RhdGEvJwogIG91dHByZWZpeCA8LSBzdHJfYygiYmVuY2htYXJrX2VtYnJ5b19wb3BfIiwgcG9wLCAnX2VucicsIHBvcF9lbnIsICJfc2VlZCIsIHNlZWQpCiAgY29sZGF0YSA8LSByZWFkX2NzdihwYXN0ZTAob3V0ZGlyLCBvdXRwcmVmaXgsICIuY29sZGF0YS5jc3YiKSkgJT4lIGNvbHVtbl90b19yb3duYW1lcygpCiAgIyMgQWRkIHJlZHVjZWQgZGltICsgY29sZGF0YSB0byBzY2UKICBjb2xEYXRhKHNjZSkgPC0gRGF0YUZyYW1lKGNvbGRhdGEpCiAgCiAgc2V0LnNlZWQoc2VlZCkKICBzY2VfYmUgPC0gYWRkX2JhdGNoX2VmZmVjdF9ub25saW5lYXIoZW1icnlvX3NjZSwgZGltcz1jKDMsNSksIHRoZXRhX2RlZyA9IDMwKQogIFhfcGNhIDwtIHJlZHVjZWREaW0oc2NlX2JlLCAicGNhX2JhdGNoIikKICAjIyBTYXZlIHJlZHVjZWQgZGltcwogIHdyaXRlX2Nzdihhcy5kYXRhLmZyYW1lKFhfcGNhKSAlPiUgcm93bmFtZXNfdG9fY29sdW1uKCksIHN0cl9jKG91dGRpciwgb3V0cHJlZml4LCAiX2JhdGNoRWZmZWN0Tm9uTGluZWFyMzAucGNhLmNzdiIpKQogIH0KCnBvcHMgPC0gdW5pcXVlKG91dF9tZXRhX2RmJHBvcCkKcG9wX2VucnMgPC0gdW5pcXVlKG91dF9tZXRhX2RmJGVucikKc2VlZHMgPC0gdW5pcXVlKG91dF9tZXRhX2RmJHNlZWQpCgpmb3IgKHBvcCBpbiBwb3BzKSB7CiAgZm9yIChwb3BfZW5yIGluIHBvcF9lbnJzWzE6M10pIHsKICAgIGZvciAoc2VlZCBpbiBzZWVkcykgewogICAgICBzYXZlX25vbmxpbmVhcl9iZShlbWJyeW9fc2NlLCBwb3AsIHBvcF9lbnIsIHNlZWQpCiAgICB9CiAgfQp9CgpgYGAKCgpSdW5uaW5nIGluIGBydW5fREFfbm9ubGluZWFyLlJgLiAKClJlYWQgYWxsIHJlc3VsdHMKCmBgYHtyfQpvdXRkaXIgPC0gIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay8iCnJlc19maWxlcyA8LSBsaXN0LmZpbGVzKG91dGRpciwgcGF0dGVybj0iTm9uTGluZWFyLitEQXJlc3VsdHMuKy5jc3YiKQpyZXNfZmlsZXNfZnVsbCA8LSBsaXN0LmZpbGVzKG91dGRpciwgcGF0dGVybj0iTm9uTGluZWFyLitEQXJlc3VsdHMuKy5jc3YiLCBmdWxsLm5hbWVzID0gVFJVRSkKCiMjIE1ha2UgZGF0YSBmcmFtZSB3IGJlbmNobWFyayBwYXJhbWV0ZXJzCm5vbmxfb3V0X21ldGFfZGYgPC0gZGF0YS5mcmFtZShmaWxlX2lkID0gc3RyX3JlbW92ZV9hbGwocmVzX2ZpbGVzLCAiYmVuY2htYXJrX2VtYnJ5b19wb3BffC5jc3YiKSkgJT4lCiAgc2VwYXJhdGUoY29sID0gZmlsZV9pZCwgc2VwID0gIi5EQXJlc3VsdHMuIiwgaW50bz1jKCJmaWxlX2lkIiwgIm1ldGhvZCIpKSAlPiUKICBzZXBhcmF0ZShjb2wgPSBmaWxlX2lkLCBzZXAgPSAiX2VuciIsIGludG89YygicG9wIiwgImZpbGVfaWQiKSkgJT4lCiAgc2VwYXJhdGUoY29sID0gZmlsZV9pZCwgc2VwID0gIl8iLCBpbnRvPWMoImVuciIsICJzZWVkIiwgImJhdGNoRWZmZWN0IikpICU+JQogIG11dGF0ZShzZWVkPXN0cl9yZW1vdmUoc2VlZCwgInNlZWQiKSwgYmF0Y2hFZmZlY3Q9c3RyX3JlbW92ZShiYXRjaEVmZmVjdCwgImJhdGNoRWZmZWN0IikpCgojIyBMb2FkIHJlc3VsdHMKbm9ubF9vdXRjb21lX2RmIDwtIGxhcHBseShzZXFfYWxvbmcocmVzX2ZpbGVzX2Z1bGwpLCBmdW5jdGlvbihpKXsgCiAgcHJpbnQocGFzdGUoIk91dGNvbWUgbm8uICIsIGkpKQogIGJlbmNobWFya19kZiA8LSByZWFkX2NzdihyZXNfZmlsZXNfZnVsbFtpXSkgJT4lCiAgICAgIC5vdXRjb21lX2J5X3Byb2IoZGFfdXBwZXIgPSAwLjYpICU+JQogICAgICBtdXRhdGUoREFfdGhyZXNoPTAuNikgJT4lCiAgICAgIHVuZ3JvdXAoKSAlPiUKICAgICAgZHBseXI6OnNlbGVjdCgtIG1ldGhvZCkgJT4lCiAgICAgIGJpbmRfY29scyhub25sX291dF9tZXRhX2RmW2ksXSkgCiAgcG9wX2VuciA8LSBhcy5udW1lcmljKG5vbmxfb3V0X21ldGFfZGZbaSwiZW5yIl0pCiAgYmVuY2htYXJrX2RmCiAgfSkgJT4lCiAgcHVycnI6OnJlZHVjZShiaW5kX3Jvd3MpCgpub25sX291dGNvbWVfZGYgCmBgYApgYGB7cn0KcGxfZGYgPC0gbm9ubF9vdXRjb21lX2RmICU+JQogIGZpbHRlcihlbnIgPiAwLjYpICU+JQogIG11dGF0ZShGRFIgPSBGUC8oVFArRlApKSAlPiUKICBtdXRhdGUoVFBSPWlmZWxzZShpcy5uYW4oVFBSKSwgMCwgVFBSKSwKICAgICAgICAgRlBSPWlmZWxzZShpcy5uYW4oRlBSKSwgMCwgRlBSKSwKICAgICAgICAgRkRSPWlmZWxzZShpcy5uYW4oRkRSKSwgMCwgRkRSKSwKICAgICAgICAgUHJlY2lzaW9uPWlmZWxzZShpcy5uYW4oUHJlY2lzaW9uKSwgMCwgUHJlY2lzaW9uKSkgJT4lCiAgbXV0YXRlKHBvcD1zdHJfcmVwbGFjZShwb3AsICJfIiwgIiAiKSkgCgpwbF9kZiAlPiUKICBnZ3Bsb3QoYWVzKHBvcCwgVFBSKSkgKyAKICBnZ2JlZXN3YXJtOjpnZW9tX3F1YXNpcmFuZG9tKGFscGhhPTAuNSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuOCwgbGluZXR5cGU9MikgKwogIHRoZW1lX2J3KGJhc2Vfc2l6ZSA9IDE2KSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGU9IkRhcmsyIikgKwogIGZhY2V0X2dyaWQoZW5yfi4sIGxhYmVsbGVyID0gJ2xhYmVsX2JvdGgnKSArCnBsX2RmICU+JQogIGdncGxvdChhZXMocG9wLCBGRFIpKSArIAogIGdnYmVlc3dhcm06Omdlb21fcXVhc2lyYW5kb20oYWxwaGE9MC41KSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC4xLCBsaW5ldHlwZT0yKSArCiAgdGhlbWVfYncoYmFzZV9zaXplID0gMTYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZT0iRGFyazIiKSArCiAgZmFjZXRfZ3JpZChlbnJ+LiwgbGFiZWxsZXIgPSAnbGFiZWxfYm90aCcpICsKcGxvdF9sYXlvdXQoZ3VpZGVzPSdjb2xsZWN0JykgCmBgYApgYGB7cn0KbGluX2JlIDwtIG91dGNvbWVfZGYgJT4lCiAgZmlsdGVyKG1ldGhvZD09Im1pbG9fYmF0Y2giICYgZW5yICVpbiUgYygwLjcsIDAuOCkgJiBEQV90aHJlc2g9PTAuNikKCmJpbmRfcm93cygKICBtdXRhdGUobGluX2JlLCBjbGFzcz0iTGluZWFyIGJhdGNoIGVmZmVjdCIpLAogIG11dGF0ZShub25sX291dGNvbWVfZGYsIGNsYXNzPSJOb24gTGluZWFyXG4gYmF0Y2ggZWZmZWN0IikgJT4lCiAgICBmaWx0ZXIoZW5yID4gMC42KSAlPiUKICAgIG11dGF0ZShlbnI9YXMubnVtZXJpYyhlbnIpLCBzZWVkPWFzLm51bWVyaWMoc2VlZCksIGJhdGNoRWZmZWN0PWFzLm51bWVyaWMoc3RyX3JlbW92ZShiYXRjaEVmZmVjdCwgIk5vbkxpbmVhciIpKSkgCiAgKSAlPiUKICBnZ3Bsb3QoYWVzKGFzLmZhY3RvcihiYXRjaEVmZmVjdCksIFRQUiwgY29sb3I9bWV0aG9kKSkgKwogIGdlb21fYm94cGxvdCgpICsKICBnZ2JlZXN3YXJtOjpnZW9tX3F1YXNpcmFuZG9tKGFscGhhPTAuNSkgKwogIGZhY2V0X2dyaWQoZW5yfmNsYXNzLCBzY2FsZXM9ImZyZWUiLCBzcGFjZT0iZnJlZSIpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzPW1ldGhvZF9jb2xvcnNbWzRdXSwgbGFiZWxzPXNldE5hbWVzKG1ldGhvZF9sYWJlbHMsIG1ldGhvZF9uYW1lcykpICsKICB0aGVtZV9idyhiYXNlX3NpemU9MTYpICsKICB4bGFiKCJCYXRjaCBlZmZlY3QgbWFnbml0dWRlIikKYGBgCgoKIyMjIENvcnJlY3RpbmcgYmF0Y2ggZWZmZWN0CgpgYGB7cn0KbGlicmFyeShiYXRjaGVsb3IpCiMgCiMgYmVfc2NlIDwtIGJlX3NjZV9sc1tbNF1dCiMgY29sZGF0YV9maWxlIDwtIGxpc3QuZmlsZXMoaW5kaXIsIHBhdHRlcm49cGFzdGUwKHBvcCwiLisiLCAiZW5yIixlbnIsIi4rIiwnc2VlZCcsIHNlZWQsICIuY29sZGF0YS5jc3YiKSxmdWxsLm5hbWVzID0gVFJVRSkKIyBjb2xEYXRhKGJlX3NjZSkgPC0gRGF0YUZyYW1lKHJlYWRfY3N2KGNvbGRhdGFfZmlsZSkgJT4lIGNvbHVtbl90b19yb3duYW1lcygpKQoKbW5uX2NvcnJlY3RfYmF0Y2hfZWZmZWN0IDwtIGZ1bmN0aW9uKGJlX3NjZSwgaz01MCl7CiAgIyMgU3BsaXQgaW4gdHdvIFNDRSBvYmplY3RzCiAgYjFfYmVfc2NlIDwtIGJlX3NjZVssYmVfc2NlJHN5bnRoX2JhdGNoZXM9PSJCMSJdCiAgYjJfYmVfc2NlIDwtIGJlX3NjZVssYmVfc2NlJHN5bnRoX2JhdGNoZXM9PSJCMiJdCiAgCiAgYmVfbW5uIDwtIHJlZHVjZWRNTk4ocmVkdWNlZERpbShiMV9iZV9zY2UsICJwY2EuY29ycmVjdGVkIiksIHJlZHVjZWREaW0oYjJfYmVfc2NlLCAicGNhLmNvcnJlY3RlZCIpLCBrPWspCiAgcmVkdWNlZERpbShiZV9zY2UsICJwY2EuTU5OIikgPC0gYmVfbW5uJGNvcnJlY3RlZFtjb2xuYW1lcyhiZV9zY2UpLF0KICBiZV9zY2UKICB9CgojIyBTaW11bGF0ZSBiYXRjaCBlZmZlY3RzIG9mIGRpZmZlcmVudCBtYWduaXR1ZGUKc2F2ZV9jb3JyZWN0ZWRfYmUgPC0gZnVuY3Rpb24ocG9wLCBwb3BfZW5yLCBzZWVkLCBiZV9zZCl7CiAgIyMgTG9hZCBjb2xkYXRhIGFuZCBQQ0EKICBvdXRkaXIgPC0gJy9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS8nCiAgb3V0cHJlZml4IDwtIHN0cl9jKCJiZW5jaG1hcmtfZW1icnlvX3BvcF8iLCBwb3AsICdfZW5yJywgcG9wX2VuciwgIl9zZWVkIiwgc2VlZCkKICBjb2xkYXRhIDwtIHJlYWRfY3N2KHBhc3RlMChvdXRkaXIsIG91dHByZWZpeCwgIi5jb2xkYXRhLmNzdiIpKSAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCkKICBYX3BjYSA8LXJlYWRfY3N2KHN0cl9jKG91dGRpciwgb3V0cHJlZml4LCAiX2JhdGNoRWZmZWN0IiwgYmVfc2QsICIucGNhLmNzdiIpKSAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCkKICAKICAjIyBBZGQgcmVkdWNlZCBkaW0gKyBjb2xkYXRhIHRvIHNjZQogIGNvbERhdGEoZW1icnlvX3NjZSkgPC0gRGF0YUZyYW1lKGNvbGRhdGEpCiAgcmVkdWNlZERpbShlbWJyeW9fc2NlLCAicGNhX2JhdGNoIikgPC0gYXMubWF0cml4KFhfcGNhKQogIAogIHNldC5zZWVkKHNlZWQpCiAgc2NlX2JlIDwtIG1ubl9jb3JyZWN0X2JhdGNoX2VmZmVjdChlbWJyeW9fc2NlKQogIFhfcGNhIDwtIHJlZHVjZWREaW0oc2NlX2JlLCAicGNhLk1OTiIpCiAgIyMgU2F2ZSByZWR1Y2VkIGRpbXMKICB3cml0ZV9jc3YoYXMuZGF0YS5mcmFtZShYX3BjYSkgJT4lIHJvd25hbWVzX3RvX2NvbHVtbigpLCBzdHJfYyhvdXRkaXIsIG91dHByZWZpeCwgIl9iYXRjaEVmZmVjdCIsIGJlX3NkLCIuTU5OY29ycmVjdGVkLnBjYS5jc3YiKSkKICB9CgpiZV9zZHMgPC0gdW5pcXVlKG91dF9tZXRhX2RmJGJhdGNoRWZmZWN0KQoKZm9yIChwb3AgaW4gcG9wcykgewogICAgZm9yIChzZWVkIGluIHNlZWRzKSB7CiAgICAgIGZvciAoYmVfc2QgaW4gYygwLjUsIDAuNzUsIDEpKSB7CiAgICAgIHBvcF9lbnIgPSAwLjcKICAgICAgc2F2ZV9jb3JyZWN0ZWRfYmUocG9wLCBwb3BfZW5yLCBzZWVkLCBiZV9zZCkKICAgICAgfQogICAgfQogIH0KYGBgCgo8IS0tIGBgYHtyLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD04fSAtLT4KPCEtLSBYX3BjYV9tbm4gPC0gcmVhZF9jc3YoIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS9iZW5jaG1hcmtfZW1icnlvX3BvcF9Tb21pdGljX21lc29kZXJtX2VucjAuOF9zZWVkNDVfYmF0Y2hFZmZlY3QxLk1OTmNvcnJlY3RlZC5wY2EuY3N2IikgJT4lIC0tPgo8IS0tICAgY29sdW1uX3RvX3Jvd25hbWVzKCkgLS0+Cgo8IS0tIGNvbGRhdGEgPC0gcmVhZF9jc3YoIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS9iZW5jaG1hcmtfZW1icnlvX3BvcF9Tb21pdGljX21lc29kZXJtX2VucjAuOF9zZWVkNDUuY29sZGF0YS5jc3YiKSAlPiUgY29sdW1uX3RvX3Jvd25hbWVzKCkgLS0+CjwhLS0gY29sRGF0YShlbWJyeW9fc2NlKSA8LSBjb2xkYXRhICU+JSBEYXRhRnJhbWUoKSAtLT4KPCEtLSByZWR1Y2VkRGltKGVtYnJ5b19zY2UsICJwY2FfYmF0Y2giKSA8LSBhcy5tYXRyaXgoWF9wY2FfbW5uKSAtLT4KPCEtLSBlbWJyeW9fc2NlIDwtIHJ1blVNQVAoZW1icnlvX3NjZSwgZGltcmVkPSJwY2FfYmF0Y2giLCBuYW1lPSJ1bWFwX2JhdGNoIikgLS0+CjwhLS0gaW5kaXIgPC0gIn4vZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS8iIC0tPgoKPCEtLSBtaWxvX3JlcyA8LSBydW5fbWlsbyhlbWJyeW9fc2NlLCBjb25kaXRpb25fY29sPSJzeW50aF9sYWJlbHMiLCBzYW1wbGVfY29sPSJzeW50aF9zYW1wbGVzIiwgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjZWQuZGltID0gInBjYV9iYXRjaCIsIGQ9MzAsIGs9NTApIC0tPgo8IS0tIG1pbG9fcmVzJE1pbG8gPC0gYnVpbGROaG9vZEdyYXBoKG1pbG9fcmVzJE1pbG8pIC0tPgoKPCEtLSBwbG90Tmhvb2RHcmFwaERBKG1pbG9fcmVzJE1pbG8sIG1pbG9fcmVzJERBcmVzLCBsYXlvdXQgPSAidW1hcF9iYXRjaCIpIC0tPgoKPCEtLSBvdXQgPC0gbWlsbzJvdXRwdXQobWlsb19yZXMkTWlsbywgbWlsb19yZXMkREFyZXMsIG91dF90eXBlID0gImxhYmVsIikgLS0+CjwhLS0gZW1icnlvX3NjZSRwcmVkIDwtIG91dCAtLT4KPCEtLSBwbG90UmVkdWNlZERpbShlbWJyeW9fc2NlLCBkaW1yZWQgPSAidW1hcF9iYXRjaCIsIHBvaW50X3NpemU9MC4xLCBjb2xvdXJfYnk9IkNvbmRpdGlvbjFfcHJvYiIpIC0tPgo8IS0tIHBsb3RSZWR1Y2VkRGltKGVtYnJ5b19zY2UsIGRpbXJlZCA9ICJ1bWFwX2JhdGNoIiwgcG9pbnRfc2l6ZT0wLjEsIGNvbG91cl9ieT0icHJlZCIpIC0tPgo8IS0tIGBgYCAtLT4KClJlYWQgYWxsIHJlc3VsdHMKCmBgYHtyfQpvdXRkaXIgPC0gIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay8iCnJlc19maWxlcyA8LSBsaXN0LmZpbGVzKG91dGRpciwgcGF0dGVybj0iLitNTk5jb3JyZWN0ZWQuK0RBcmVzdWx0cy4rLmNzdiIpCnJlc19maWxlc19mdWxsIDwtIGxpc3QuZmlsZXMob3V0ZGlyLCBwYXR0ZXJuPSIuK01OTmNvcnJlY3RlZC4rREFyZXN1bHRzLisuY3N2IiwgZnVsbC5uYW1lcyA9IFRSVUUpCiMgaW5fZmlsZXMgPC0gbGlzdC5maWxlcygifi9kYXRhL21pbG9fYmVuY2htYXJrL3N5bnRoZXRpY19kYXRhLyIsIHBhdHRlcm49Il9lbnIwLls3OF0uK2NvbGRhdGEuY3N2IikKCiMjIE1ha2UgZGF0YSBmcmFtZSB3IGJlbmNobWFyayBwYXJhbWV0ZXJzCm1ubl9vdXRfbWV0YV9kZiA8LSBkYXRhLmZyYW1lKGZpbGVfaWQgPSBzdHJfcmVtb3ZlX2FsbChyZXNfZmlsZXMsICJiZW5jaG1hcmtfZW1icnlvX3BvcF98LmNzdiIpKSAlPiUKICBzZXBhcmF0ZShjb2wgPSBmaWxlX2lkLCBzZXAgPSAiLkRBcmVzdWx0cy4iLCBpbnRvPWMoImZpbGVfaWQiLCAibWV0aG9kIikpICU+JQogIHNlcGFyYXRlKGNvbCA9IGZpbGVfaWQsIHNlcCA9ICJfZW5yIiwgaW50bz1jKCJwb3AiLCAiZmlsZV9pZCIpKSAlPiUKICBzZXBhcmF0ZShjb2wgPSBmaWxlX2lkLCBzZXAgPSAiXyIsIGludG89YygiZW5yIiwgInNlZWQiLCAiYmF0Y2hFZmZlY3QiKSkgJT4lCiAgbXV0YXRlKHNlZWQ9c3RyX3JlbW92ZShzZWVkLCAic2VlZCIpLCBiYXRjaEVmZmVjdD1zdHJfcmVtb3ZlKGJhdGNoRWZmZWN0LCAiYmF0Y2hFZmZlY3QiKSkgCgojIyBMb2FkIHJlc3VsdHMKbW5uX291dGNvbWVfZGYgPC0gbGFwcGx5KHNlcV9hbG9uZyhyZXNfZmlsZXNfZnVsbCksIGZ1bmN0aW9uKGkpeyAKICBwcmludChwYXN0ZSgiT3V0Y29tZSBuby4gIiwgaSkpCiAgYmVuY2htYXJrX2RmIDwtIHJlYWRfY3N2KHJlc19maWxlc19mdWxsW2ldKSAlPiUKICAgICAgLm91dGNvbWVfYnlfcHJvYihkYV91cHBlciA9IDAuNikgJT4lCiAgICAgIG11dGF0ZShEQV90aHJlc2g9MC42KSAlPiUKICAgICAgdW5ncm91cCgpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KC0gbWV0aG9kKSAlPiUKICAgICAgYmluZF9jb2xzKG1ubl9vdXRfbWV0YV9kZltpLF0pIAogIHBvcF9lbnIgPC0gYXMubnVtZXJpYyhtbm5fb3V0X21ldGFfZGZbaSwiZW5yIl0pCiAgYmVuY2htYXJrX2RmCiAgfSkgJT4lCiAgcHVycnI6OnJlZHVjZShiaW5kX3Jvd3MpCgptbm5fb3V0Y29tZV9kZiAlPiUKICBmaWx0ZXIobWV0aG9kPT0ibWVsZCIpCmBgYAoKYGBge3IsIGZpZy5oZWlnaHQ9NCwgZmlnLndpZHRoPTExfQpub19iZSA8LSBvdXRjb21lX2RmICU+JQogIGZpbHRlcihiYXRjaEVmZmVjdD09IjAiKSAlPiUKICBtdXRhdGUoRkRSID0gRlAvKFRQK0ZQKSkgCgp1bmNvcnJlY3RlZF9iZSA8LSBvdXRjb21lX2RmICU+JQogIGZpbHRlcihiYXRjaEVmZmVjdCAlaW4lIGMoIjAuNSIsICIwLjc1IiwgJzEnKSkgJT4lCiAgbXV0YXRlKEZEUiA9IEZQLyhUUCtGUCkpIAoKcGxfZGYgPC0gbW5uX291dGNvbWVfZGYgJT4lCiAgZmlsdGVyKGVuciA+IDAuNikgJT4lCiAgIG11dGF0ZShiYXRjaEVmZmVjdCA9IHN0cl9yZW1vdmUoYmF0Y2hFZmZlY3QsICIuTU5OY29ycmVjdGVkIikpICU+JQogIG11dGF0ZShGRFIgPSBGUC8oVFArRlApKSAlPiUKICBtdXRhdGUoVFBSPWlmZWxzZShpcy5uYW4oVFBSKSwgMCwgVFBSKSwKICAgICAgICAgRlBSPWlmZWxzZShpcy5uYW4oRlBSKSwgMCwgRlBSKSwKICAgICAgICAgRkRSPWlmZWxzZShpcy5uYW4oRkRSKSwgMCwgRkRSKSwKICAgICAgICAgUHJlY2lzaW9uPWlmZWxzZShpcy5uYW4oUHJlY2lzaW9uKSwgMCwgUHJlY2lzaW9uKSkgJT4lCiAgbXV0YXRlKHBvcD1zdHJfcmVwbGFjZShwb3AsICJfIiwgIiAiKSkgJT4lCiAgbXV0YXRlKHBvcF9zaXplPXBvcF9zaXplc1twb3BdKSAgJT4lCiAgYXJyYW5nZShwb3Bfc2l6ZSkgJT4lCiAgbXV0YXRlKHBvcD1mYWN0b3IocG9wLCBsZXZlbHM9dW5pcXVlKHBvcCkpKSAKCnBsX3RvcCA8LSBiaW5kX3Jvd3MobXV0YXRlKG5vX2JlLCBjbGFzcz0ibm8gQmF0Y2ggRWZmZWN0IiksCiAgbXV0YXRlKHVuY29ycmVjdGVkX2JlLCBjbGFzcz0iVW5jb3JyZWN0ZWQiKSwKICBtdXRhdGUocGxfZGYsIGNsYXNzPSJNTk4gY29ycmVjdGVkIikpICU+JQogIG11dGF0ZShjbGFzcz1mYWN0b3IoY2xhc3MsIGxldmVscz1jKCJubyBCYXRjaCBFZmZlY3QiLCAiTU5OIGNvcnJlY3RlZCIsICJVbmNvcnJlY3RlZCIpKSkgJT4lCiAgICBtdXRhdGUoRkRSID0gRlAvKFRQK0ZQKSkgJT4lCiAgbXV0YXRlKFRQUj1pZmVsc2UoaXMubmFuKFRQUiksIDAsIFRQUiksCiAgICAgICAgIEZQUj1pZmVsc2UoaXMubmFuKEZQUiksIDAsIEZQUiksCiAgICAgICAgIEZEUj1pZmVsc2UoaXMubmFuKEZEUiksIDAsIEZEUiksCiAgICAgICAgIFByZWNpc2lvbj1pZmVsc2UoaXMubmFuKFByZWNpc2lvbiksIDAsIFByZWNpc2lvbikpICU+JQogIGZpbHRlcihtZXRob2QgIT0gIm1pbG9fYmF0Y2giICYgbWV0aG9kICE9ImxvdXZhaW5fYmF0Y2giKSAlPiUKICBnZ3Bsb3QoYWVzKGFzLmZhY3RvcihiYXRjaEVmZmVjdCksIGNvbG9yPW1ldGhvZCwgVFBSKSkgKyAKICBnZW9tX2JveHBsb3QoKSArCiAgZmFjZXRfZ3JpZCgufmNsYXNzLCBzcGFjZT0iZnJlZSIsIHNjYWxlcz0iZnJlZSIpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZT0iRGFyazIiKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZT0iRGFyazIiKSArCiAgdGhlbWVfYncoYmFzZV9zaXplPTE2KSArCiAgeGxhYigiQmF0Y2ggZWZmZWN0IG1hZ25pdHVkZSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSwgYXhpcy50aWNrcy54ID0gZWxlbWVudF9ibGFuaygpLCBheGlzLnRpdGxlLnggPSBlbGVtZW50X2JsYW5rKCkpCgpwbF9ib3R0b20gPC0gYmluZF9yb3dzKG11dGF0ZShub19iZSwgY2xhc3M9Im5vIEJhdGNoIEVmZmVjdCIpLAogIG11dGF0ZSh1bmNvcnJlY3RlZF9iZSwgY2xhc3M9IlVuY29ycmVjdGVkIiksCiAgbXV0YXRlKHBsX2RmLCBjbGFzcz0iTU5OIGNvcnJlY3RlZCIpKSAlPiUKICBtdXRhdGUoY2xhc3M9ZmFjdG9yKGNsYXNzLCBsZXZlbHM9Yygibm8gQmF0Y2ggRWZmZWN0IiwgIk1OTiBjb3JyZWN0ZWQiLCAiVW5jb3JyZWN0ZWQiKSkpICU+JQogICAgbXV0YXRlKEZEUiA9IEZQLyhUUCtGUCkpICU+JQogIG11dGF0ZShUUFI9aWZlbHNlKGlzLm5hbihUUFIpLCAwLCBUUFIpLAogICAgICAgICBGUFI9aWZlbHNlKGlzLm5hbihGUFIpLCAwLCBGUFIpLAogICAgICAgICBGRFI9aWZlbHNlKGlzLm5hbihGRFIpLCAwLCBGRFIpLAogICAgICAgICBQcmVjaXNpb249aWZlbHNlKGlzLm5hbihQcmVjaXNpb24pLCAwLCBQcmVjaXNpb24pKSAlPiUKICBmaWx0ZXIobWV0aG9kICE9ICJtaWxvX2JhdGNoIiAmIG1ldGhvZCAhPSJsb3V2YWluX2JhdGNoIikgJT4lCiAgZ2dwbG90KGFlcyhhcy5mYWN0b3IoYmF0Y2hFZmZlY3QpLCBjb2xvcj1tZXRob2QsIEZEUikpICsgCiAgZ2VvbV9ib3hwbG90KCkgKwogIGZhY2V0X2dyaWQoLn5jbGFzcywgc3BhY2U9ImZyZWUiLCBzY2FsZXM9ImZyZWUiKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGU9IkRhcmsyIikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IkRhcmsyIikgKwogIHRoZW1lX2J3KGJhc2Vfc2l6ZT0xNikgKwogIHhsYWIoIkJhdGNoIGVmZmVjdCBtYWduaXR1ZGUiKQoKcGxfdG9wIC8gcGxfYm90dG9tICsKICBwbG90X2xheW91dChndWlkZXM9ImNvbGxlY3QiKQpgYGAKCmBgYHtyfQptbm5fb3V0Y29tZV9kZiAlPiUKICBtdXRhdGUoYmF0Y2hFZmZlY3QgPSBhcy5udW1lcmljKHN0cl9yZW1vdmUoYmF0Y2hFZmZlY3QsICIuTU5OY29ycmVjdGVkIikpKSAlPiUKICBtdXRhdGUoRkRSID0gRlAvKFRQK0ZQKSkgJT4lCiAgbXV0YXRlKFRQUj1pZmVsc2UoaXMubmFuKFRQUiksIDAsIFRQUiksCiAgICAgICAgIEZQUj1pZmVsc2UoaXMubmFuKEZQUiksIDAsIEZQUiksCiAgICAgICAgICBGRFI9aWZlbHNlKGlzLm5hbihGRFIpLCAwLCBGRFIpLAogICAgICAgICBQcmVjaXNpb249aWZlbHNlKGlzLm5hbihQcmVjaXNpb24pLCAwLCBQcmVjaXNpb24pKSAlPiUKICByZW5hbWUobWV0cmljPW1ldHJpYykgJT4lCiAgZ3JvdXBfYnkobWV0aG9kLCBEQV90aHJlc2gsIGJhdGNoRWZmZWN0LCBlbnIpICU+JQogIHN1bW1hcmlzZShtZWFuX21ldHJpYz1tZWFuKG1ldHJpYyksIAogICAgICAgICAgICBzZF9tZXRyaWM9c2QobWV0cmljKSkgJT4lCiAgbXV0YXRlKGdyb3VwPXBhc3RlKG1ldGhvZCwgZW5yKSkgJT4lCiAgZ2dwbG90KGFlcyhiYXRjaEVmZmVjdCwgbWVhbl9tZXRyaWMsIGNvbG9yPW1ldGhvZCkpICsKICAgIGdlb21fbGluZSgpICsKICBnZW9tX3JpYmJvbihhZXMoeW1pbj1tZWFuX21ldHJpYy1zZF9tZXRyaWMsIHltYXg9bWVhbl9tZXRyaWMrc2RfbWV0cmljLCBmaWxsPW1ldGhvZCksIGFscGhhPTAuMiwgY29sb3I9TkEpICsKICBnZW9tX3BvaW50KHNpemU9MykgKwogIGZhY2V0X2dyaWQoZW5yfi4sIGxhYmVsbGVyPSJsYWJlbF9ib3RoIikgKwogIHhsYWIoIkJhdGNoIGVmZmVjdCBtYWduaXR1ZGUiKSArCiAgICB5bGFiKHBhc3RlKCJtZWFuIiwgbWV0cmljKSkgKwogICAgdGhlbWVfYncoYmFzZV9zaXplPTE2KSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGU9IkRhcmsyIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuOCwgbGluZXR5cGU9MikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGU9IkRhcmsyIikgCmBgYAoKClBsb3QgVU1BUApgYGB7ciwgZmlnLndpZHRoPTYsZmlnLmhlaWdodD03fQpYX3BjYV9tbm4gPC0gcmVhZF9jc3YoIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS9iZW5jaG1hcmtfZW1icnlvX3BvcF9Tb21pdGljX21lc29kZXJtX2VucjAuOF9zZWVkNDNfYmF0Y2hFZmZlY3QwLjc1Lk1OTmNvcnJlY3RlZC5wY2EuY3N2IikgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCkKCmFsbChyb3duYW1lcyhYX3BjYV9tbm4pID09IGNvbG5hbWVzKGVtYnJ5b19zY2UpKQpjb2xkYXRhIDwtIHJlYWRfY3N2KCIvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvc3ludGhldGljX2RhdGEvYmVuY2htYXJrX2VtYnJ5b19wb3BfU29taXRpY19tZXNvZGVybV9lbnIwLjhfc2VlZDQzLmNvbGRhdGEuY3N2IikKY29sRGF0YShlbWJyeW9fc2NlKSA8LSBjb2xkYXRhICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoKSAlPiUgRGF0YUZyYW1lKCkKcmVkdWNlZERpbShlbWJyeW9fc2NlLCAicGNhX2JhdGNoIikgPC0gYXMubWF0cml4KFhfcGNhX21ubikKZW1icnlvX3NjZSA8LSBydW5VTUFQKGVtYnJ5b19zY2UsIGRpbXJlZD0icGNhX2JhdGNoIiwgbmFtZT0idW1hcF9iYXRjaCIpCgppbmRpciA8LSAifi9kYXRhL21pbG9fYmVuY2htYXJrL3N5bnRoZXRpY19kYXRhLyIKcmVzIDwtIHJlYWRfY3N2KCIvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvYmVuY2htYXJrX2VtYnJ5b19wb3BfU29taXRpY19tZXNvZGVybV9lbnIwLjhfc2VlZDQzX2JhdGNoRWZmZWN0MC43NS5EQXJlc3VsdHMubWlsby5jc3YiKQplbWJyeW9fc2NlJHByZWQgPC0gcmVzJHByZWQKZW1icnlvX3NjZSR0cnVlIDwtIHJlcyR0cnVlCnBsb3RSZWR1Y2VkRGltKGVtYnJ5b19zY2UsICJ1bWFwX2JhdGNoIiwgY29sb3VyX2J5PSJDb25kaXRpb24xX3Byb2IiLCBwb2ludF9zaXplPTAuMSkKcGxvdFJlZHVjZWREaW0oZW1icnlvX3NjZSwgInVtYXBfYmF0Y2giLCBjb2xvdXJfYnk9InByZWQiLCBwb2ludF9zaXplPTAuMSkKcGxvdFJlZHVjZWREaW0oZW1icnlvX3NjZSwgInVtYXBfYmF0Y2giLCBjb2xvdXJfYnk9InRydWUiLCBwb2ludF9zaXplPTAuMSkKCnJlcyAlPiUKICAub3V0Y29tZV9ieV9wcm9iKGRhX3VwcGVyID0gMC42KSAlPiUKICBtdXRhdGUoRkRSID0gRlAvKFRQK0ZQKSkgCmBgYAoKIyMjIFJlYWQgcmVzdWx0cyBmb3IgZGlmZmVyZW50IGdlb21ldHJpZXMKCiMjIyMgTGluZWFyCgpgYGB7cn0Kb3V0ZGlyIDwtICIvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvIgpyZXNfZmlsZXMgPC0gbGlzdC5maWxlcyhvdXRkaXIsIHBhdHRlcm49ImxpbmVhci4rREFyZXN1bHRzIikKcmVzX2ZpbGVzX2Z1bGwgPC0gbGlzdC5maWxlcyhvdXRkaXIsIHBhdHRlcm49ImxpbmVhci4rREFyZXN1bHRzIiwgZnVsbC5uYW1lcyA9IFRSVUUpCmluX2ZpbGVzIDwtIGxpc3QuZmlsZXMoIn4vZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS8iLCBwYXR0ZXJuPSJsaW5lYXIuK2NvbGRhdGEuY3N2IikKCiMjIE1ha2UgZGF0YSBmcmFtZSB3IGJlbmNobWFyayBwYXJhbWV0ZXJzCmxpbmVhcl9vdXRfbWV0YV9kZiA8LSBkYXRhLmZyYW1lKGZpbGVfaWQgPSBzdHJfcmVtb3ZlX2FsbChyZXNfZmlsZXMsICJiZW5jaG1hcmtfZW1icnlvX3BvcF98LmNzdiIpKSAlPiUKICBzZXBhcmF0ZShjb2wgPSBmaWxlX2lkLCBzZXAgPSAiLkRBcmVzdWx0cy4iLCBpbnRvPWMoImZpbGVfaWQiLCAibWV0aG9kIikpICU+JQogIHNlcGFyYXRlKGNvbCA9IGZpbGVfaWQsIHNlcCA9ICJfZW5yIiwgaW50bz1jKCJwb3AiLCAiZmlsZV9pZCIpKSAlPiUKICBzZXBhcmF0ZShjb2wgPSBmaWxlX2lkLCBzZXAgPSAiXyIsIGludG89YygiZW5yIiwgInNlZWQiLCAiYmF0Y2hFZmZlY3QiKSkgJT4lCiAgbXV0YXRlKHNlZWQ9c3RyX3JlbW92ZShzZWVkLCAic2VlZCIpLCBiYXRjaEVmZmVjdD1zdHJfcmVtb3ZlKGJhdGNoRWZmZWN0LCAiYmF0Y2hFZmZlY3QiKSkgCgojIyBMb2FkIHJlc3VsdHMKbGluZWFyX291dGNvbWVfZGYgPC0gbGFwcGx5KHNlcV9hbG9uZyhyZXNfZmlsZXNfZnVsbCksIGZ1bmN0aW9uKGkpeyAKICBwcmludChwYXN0ZSgiT3V0Y29tZSBuby4gIiwgaSkpCiAgYmVuY2htYXJrX2RmIDwtIHJlYWRfY3N2KHJlc19maWxlc19mdWxsW2ldKSAlPiUKICAgICAgLm91dGNvbWVfYnlfcHJvYihkYV91cHBlciA9IDAuNikgJT4lCiAgICAgIG11dGF0ZShEQV90aHJlc2g9MC42KSAlPiUKICAgICAgdW5ncm91cCgpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KC0gbWV0aG9kKSAlPiUKICAgICAgYmluZF9jb2xzKGxpbmVhcl9vdXRfbWV0YV9kZltpLF0pIAogIHBvcF9lbnIgPC0gYXMubnVtZXJpYyhsaW5lYXJfb3V0X21ldGFfZGZbaSwiZW5yIl0pCiAgYmVuY2htYXJrX2RmCiAgfSkgJT4lCiAgcHVycnI6OnJlZHVjZShiaW5kX3Jvd3MpCgpsaW5lYXJfb3V0Y29tZV9kZiAKYGBgCmBgYHtyfQpwbF9kZiA8LSBsaW5lYXJfb3V0Y29tZV9kZiAlPiUKICBmaWx0ZXIobWV0aG9kIT0ibWlsb19iYXRjaCIpICU+JQogIG11dGF0ZShGRFIgPSBGUC8oVFArRlApKSAlPiUKICBtdXRhdGUoVFBSPWlmZWxzZShpcy5uYW4oVFBSKSwgMCwgVFBSKSwKICAgICAgICAgRlBSPWlmZWxzZShpcy5uYW4oRlBSKSwgMCwgRlBSKSwKICAgICAgICAgRkRSPWlmZWxzZShpcy5uYW4oRkRSKSwgMCwgRkRSKSwKICAgICAgICAgUHJlY2lzaW9uPWlmZWxzZShpcy5uYW4oUHJlY2lzaW9uKSwgMCwgUHJlY2lzaW9uKSkgJT4lCiAgbXV0YXRlKHBvcD1zdHJfcmVwbGFjZShwb3AsICJfIiwgIiAiKSkgJT4lCiAgbXV0YXRlKHBvcF9zaXplPXBvcF9zaXplc1twb3BdKSAgJT4lCiAgYXJyYW5nZShwb3Bfc2l6ZSkgJT4lCiAgbXV0YXRlKHBvcD1mYWN0b3IocG9wLCBsZXZlbHM9dW5pcXVlKHBvcCkpKSAlPiUKICBmaWx0ZXIoREFfdGhyZXNoID49IDAuNiAmIGJhdGNoRWZmZWN0PT0wKSAKCnBsX3JpZ2h0IDwtIHBsX2RmICU+JQogIGdncGxvdChhZXMobWV0aG9kLCBUUFIsIGNvbG9yPW1ldGhvZCkpICsgCiAgZ2VvbV9ib3hwbG90KCkgKwogIGdnYmVlc3dhcm06Omdlb21fcXVhc2lyYW5kb20oYWxwaGE9MC41KSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC44LCBsaW5ldHlwZT0yKSArCiAgdGhlbWVfYncoYmFzZV9zaXplID0gMTYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZT0iRGFyazIiKSArCiAgZmFjZXRfZ3JpZChlbnJ+LiwgbGFiZWxsZXIgPSAnbGFiZWxfYm90aCcpICsKcGxfZGYgJT4lCiAgZ2dwbG90KGFlcyhtZXRob2QsIEZEUiwgY29sb3I9bWV0aG9kKSkgKyAKICBnZW9tX2JveHBsb3QoKSArCiAgZ2diZWVzd2FybTo6Z2VvbV9xdWFzaXJhbmRvbShhbHBoYT0wLjUpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjEsIGxpbmV0eXBlPTIpICsKICB0aGVtZV9idyhiYXNlX3NpemUgPSAxNikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlPSJEYXJrMiIpICsKICBmYWNldF9ncmlkKGVucn4uLCBsYWJlbGxlciA9ICdsYWJlbF9ib3RoJykgKwpwbG90X2xheW91dChndWlkZXM9J2NvbGxlY3QnKSAmCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF9ibGFuaygpKQoKcGxfcmlnaHQKYGBgCgpQbG90IFVNQVAKYGBge3IsIGZpZy53aWR0aD02LGZpZy5oZWlnaHQ9N30KbGluZWFyX3NjZSA8LSByZWFkUkRTKCJ+L2RhdGEvbWlsb19iZW5jaG1hcmsvbGluZWFyX2RhdGFfYm0uUkRTIikKaW5kaXIgPC0gIn4vZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS8iCgpuYW1lcyhyZWR1Y2VkRGltcyhsaW5lYXJfc2NlKSlbMl0gPC0gInVtYXBfYmF0Y2giCmNvbG5hbWVzKHJlZHVjZWREaW1zKGxpbmVhcl9zY2UpW1syXV0pIDwtIGMoIlgxIiwgIlgyIikgCgpwbF90b3AgPC0gcGxvdF9vdXRjb21lX3VtYXAobGluZWFyX3NjZSwgbWV0aG9kID0gJ21pbG8nLCBwb3A9Ik01IiwgZW5yID0gMC45LCBzZWVkID0gNDMsYmF0Y2hFZmZlY3QgPSAwLCB0cnVlID0gVFJVRSwgZGF0YV9pZD0ibGluZWFyIikgKyBjb29yZF9maXhlZCgpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJyaWdodCIpCgpwbG90X2xpbmVhciA8LSAoKHBsX3RvcCkgLyAocGxfcmlnaHQpKSArCiAgcGxvdF9sYXlvdXQoaGVpZ2h0cyA9IGMoMSwyKSkKcGxvdF9saW5lYXIKYGBgCgoKCiMjIyMgQnJhbmNoaW5nCgpgYGB7cn0Kb3V0ZGlyIDwtICIvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvIgpyZXNfZmlsZXMgPC0gbGlzdC5maWxlcyhvdXRkaXIsIHBhdHRlcm49ImJyYW5jaGluZy4rREFyZXN1bHRzIikKcmVzX2ZpbGVzX2Z1bGwgPC0gbGlzdC5maWxlcyhvdXRkaXIsIHBhdHRlcm49ImJyYW5jaGluZy4rREFyZXN1bHRzIiwgZnVsbC5uYW1lcyA9IFRSVUUpCmluX2ZpbGVzIDwtIGxpc3QuZmlsZXMoIn4vZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS8iLCBwYXR0ZXJuPSJicmFuY2hpbmcuK2NvbGRhdGEuY3N2IikKCiMjIE1ha2UgZGF0YSBmcmFtZSB3IGJlbmNobWFyayBwYXJhbWV0ZXJzCmJyYW5jaF9vdXRfbWV0YV9kZiA8LSBkYXRhLmZyYW1lKGZpbGVfaWQgPSBzdHJfcmVtb3ZlX2FsbChyZXNfZmlsZXMsICJiZW5jaG1hcmtfZW1icnlvX3BvcF98LmNzdiIpKSAlPiUKICBzZXBhcmF0ZShjb2wgPSBmaWxlX2lkLCBzZXAgPSAiLkRBcmVzdWx0cy4iLCBpbnRvPWMoImZpbGVfaWQiLCAibWV0aG9kIikpICU+JQogIHNlcGFyYXRlKGNvbCA9IGZpbGVfaWQsIHNlcCA9ICJfZW5yIiwgaW50bz1jKCJwb3AiLCAiZmlsZV9pZCIpKSAlPiUKICBzZXBhcmF0ZShjb2wgPSBmaWxlX2lkLCBzZXAgPSAiXyIsIGludG89YygiZW5yIiwgInNlZWQiLCAiYmF0Y2hFZmZlY3QiKSkgJT4lCiAgbXV0YXRlKHNlZWQ9c3RyX3JlbW92ZShzZWVkLCAic2VlZCIpLCBiYXRjaEVmZmVjdD1zdHJfcmVtb3ZlKGJhdGNoRWZmZWN0LCAiYmF0Y2hFZmZlY3QiKSkgCgojIyBMb2FkIHJlc3VsdHMKYnJhbmNoX291dGNvbWVfZGYgPC0gbGFwcGx5KHNlcV9hbG9uZyhyZXNfZmlsZXNfZnVsbCksIGZ1bmN0aW9uKGkpeyAKICBwcmludChwYXN0ZSgiT3V0Y29tZSBuby4gIiwgaSkpCiAgYmVuY2htYXJrX2RmIDwtIHJlYWRfY3N2KHJlc19maWxlc19mdWxsW2ldKSAlPiUKICAgICAgLm91dGNvbWVfYnlfcHJvYihkYV91cHBlciA9IDAuNikgJT4lCiAgICAgIG11dGF0ZShEQV90aHJlc2g9MC42KSAlPiUKICAgICAgdW5ncm91cCgpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KC0gbWV0aG9kKSAlPiUKICAgICAgYmluZF9jb2xzKGJyYW5jaF9vdXRfbWV0YV9kZltpLF0pIAogIHBvcF9lbnIgPC0gYXMubnVtZXJpYyhicmFuY2hfb3V0X21ldGFfZGZbaSwiZW5yIl0pCiAgYmVuY2htYXJrX2RmCiAgfSkgJT4lCiAgcHVycnI6OnJlZHVjZShiaW5kX3Jvd3MpCgpicmFuY2hfb3V0Y29tZV9kZiAKICAKYGBgCmBgYHtyfQpwbF9kZiA8LSBicmFuY2hfb3V0Y29tZV9kZiAlPiUKICBmaWx0ZXIobWV0aG9kIT0ibWlsb19iYXRjaCIpICU+JQogIG11dGF0ZShGRFIgPSBGUC8oVFArRlApKSAlPiUKICBtdXRhdGUoVFBSPWlmZWxzZShpcy5uYW4oVFBSKSwgMCwgVFBSKSwKICAgICAgICAgRlBSPWlmZWxzZShpcy5uYW4oRlBSKSwgMCwgRlBSKSwKICAgICAgICAgRkRSPWlmZWxzZShpcy5uYW4oRkRSKSwgMCwgRkRSKSwKICAgICAgICAgUHJlY2lzaW9uPWlmZWxzZShpcy5uYW4oUHJlY2lzaW9uKSwgMCwgUHJlY2lzaW9uKSkgJT4lCiAgbXV0YXRlKHBvcD1zdHJfcmVwbGFjZShwb3AsICJfIiwgIiAiKSkgJT4lCiAgbXV0YXRlKHBvcF9zaXplPXBvcF9zaXplc1twb3BdKSAgJT4lCiAgYXJyYW5nZShwb3Bfc2l6ZSkgJT4lCiAgbXV0YXRlKHBvcD1mYWN0b3IocG9wLCBsZXZlbHM9dW5pcXVlKHBvcCkpKSAlPiUKICBmaWx0ZXIoREFfdGhyZXNoID49IDAuNiAmIGJhdGNoRWZmZWN0PT0wKSAKCnBsX3JpZ2h0IDwtIHBsX2RmICU+JQogIGdncGxvdChhZXMobWV0aG9kLCBUUFIsIGNvbG9yPW1ldGhvZCkpICsgCiAgZ2VvbV9ib3hwbG90KCkgKwogIGdnYmVlc3dhcm06Omdlb21fcXVhc2lyYW5kb20oYWxwaGE9MC41KSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC44LCBsaW5ldHlwZT0yKSArCiAgdGhlbWVfYncoYmFzZV9zaXplID0gMTYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZT0iRGFyazIiKSArCiAgZmFjZXRfZ3JpZChlbnJ+LiwgbGFiZWxsZXIgPSAnbGFiZWxfYm90aCcpICsKcGxfZGYgJT4lCiAgZ2dwbG90KGFlcyhtZXRob2QsIEZEUiwgY29sb3I9bWV0aG9kKSkgKyAKICBnZW9tX2JveHBsb3QoKSArCiAgZ2diZWVzd2FybTo6Z2VvbV9xdWFzaXJhbmRvbShhbHBoYT0wLjUpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjEsIGxpbmV0eXBlPTIpICsKICB0aGVtZV9idyhiYXNlX3NpemUgPSAxNikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlPSJEYXJrMiIpICsKICBmYWNldF9ncmlkKGVucn4uLCBsYWJlbGxlciA9ICdsYWJlbF9ib3RoJykgKwpwbG90X2xheW91dChndWlkZXM9J2NvbGxlY3QnKSAmCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF9ibGFuaygpKQoKcGxfcmlnaHQKYGBgCgpQbG90IFVNQVAKYGBge3IsIGZpZy53aWR0aD02LGZpZy5oZWlnaHQ9N30KYnJhbmNoX3NjZSA8LSByZWFkUkRTKCJ+L2RhdGEvbWlsb19iZW5jaG1hcmsvYnJhbmNoaW5nX2RhdGFfYm0uUkRTIikKaW5kaXIgPC0gIn4vZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS8iCgpuYW1lcyhyZWR1Y2VkRGltcyhicmFuY2hfc2NlKSlbMl0gPC0gInVtYXBfYmF0Y2giCmNvbG5hbWVzKHJlZHVjZWREaW1zKGJyYW5jaF9zY2UpW1syXV0pIDwtIGMoIlgxIiwgIlgyIikgCgpwbF90b3AgPC0gcGxvdF9vdXRjb21lX3VtYXAoYnJhbmNoX3NjZSwgbWV0aG9kID0gJ21pbG8nLCBwb3A9Ik01IiwgZW5yID0gMC45LCBzZWVkID0gNDMsYmF0Y2hFZmZlY3QgPSAwLCB0cnVlID0gVFJVRSwgZGF0YV9pZD0iYnJhbmNoaW5nIikgKyBjb29yZF9maXhlZCgpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJyaWdodCIpCgpwbG90X2JyYW5jaCA8LSAoKHBsX3RvcCkgLyAocGxfcmlnaHQpKSArCiAgcGxvdF9sYXlvdXQoaGVpZ2h0cyA9IGMoMSwyKSkKcGxvdF9icmFuY2gKYGBgCgoKIyMjIyBTaW1wbGUgY2x1c3RlcmluZwoKYGBge3J9Cm91dGRpciA8LSAiL25mcy90ZWFtMjA1L2VkNi9kYXRhL21pbG9fYmVuY2htYXJrLyIKcmVzX2ZpbGVzIDwtIGxpc3QuZmlsZXMob3V0ZGlyLCBwYXR0ZXJuPSJjbHVzdGVyLitEQXJlc3VsdHMiKQpyZXNfZmlsZXNfZnVsbCA8LSBsaXN0LmZpbGVzKG91dGRpciwgcGF0dGVybj0iY2x1c3Rlci4rREFyZXN1bHRzIiwgZnVsbC5uYW1lcyA9IFRSVUUpCmluX2ZpbGVzIDwtIGxpc3QuZmlsZXMoIn4vZGF0YS9taWxvX2JlbmNobWFyay9zeW50aGV0aWNfZGF0YS8iLCBwYXR0ZXJuPSJjbHVzdGVyLitjb2xkYXRhLmNzdiIpCgojIyBNYWtlIGRhdGEgZnJhbWUgdyBiZW5jaG1hcmsgcGFyYW1ldGVycwpjbHVzdGVyX291dF9tZXRhX2RmIDwtIGRhdGEuZnJhbWUoZmlsZV9pZCA9IHN0cl9yZW1vdmVfYWxsKHJlc19maWxlcywgImJlbmNobWFya19lbWJyeW9fcG9wX3wuY3N2IikpICU+JQogIHNlcGFyYXRlKGNvbCA9IGZpbGVfaWQsIHNlcCA9ICIuREFyZXN1bHRzLiIsIGludG89YygiZmlsZV9pZCIsICJtZXRob2QiKSkgJT4lCiAgc2VwYXJhdGUoY29sID0gZmlsZV9pZCwgc2VwID0gIl9lbnIiLCBpbnRvPWMoInBvcCIsICJmaWxlX2lkIikpICU+JQogIHNlcGFyYXRlKGNvbCA9IGZpbGVfaWQsIHNlcCA9ICJfIiwgaW50bz1jKCJlbnIiLCAic2VlZCIsICJiYXRjaEVmZmVjdCIpKSAlPiUKICBtdXRhdGUoc2VlZD1zdHJfcmVtb3ZlKHNlZWQsICJzZWVkIiksIGJhdGNoRWZmZWN0PXN0cl9yZW1vdmUoYmF0Y2hFZmZlY3QsICJiYXRjaEVmZmVjdCIpKSAKCiMjIExvYWQgcmVzdWx0cwpjbHVzdGVyX291dGNvbWVfZGYgPC0gbGFwcGx5KHNlcV9hbG9uZyhyZXNfZmlsZXNfZnVsbCksIGZ1bmN0aW9uKGkpeyAKICBwcmludChwYXN0ZSgiT3V0Y29tZSBuby4gIiwgaSkpCiAgYmVuY2htYXJrX2RmIDwtIHJlYWRfY3N2KHJlc19maWxlc19mdWxsW2ldKSAlPiUKICAgICAgLm91dGNvbWVfYnlfcHJvYihkYV91cHBlciA9IDAuNikgJT4lCiAgICAgIG11dGF0ZShEQV90aHJlc2g9MC42KSAlPiUKICAgICAgdW5ncm91cCgpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KC0gbWV0aG9kKSAlPiUKICAgICAgYmluZF9jb2xzKGNsdXN0ZXJfb3V0X21ldGFfZGZbaSxdKSAKICBwb3BfZW5yIDwtIGFzLm51bWVyaWMoY2x1c3Rlcl9vdXRfbWV0YV9kZltpLCJlbnIiXSkKICBiZW5jaG1hcmtfZGYKICB9KSAlPiUKICBwdXJycjo6cmVkdWNlKGJpbmRfcm93cykKCmNsdXN0ZXJfb3V0Y29tZV9kZiAKICAKYGBgCmBgYHtyfQpwbF9kZiA8LSBjbHVzdGVyX291dGNvbWVfZGYgJT4lCiAgZmlsdGVyKG1ldGhvZCE9Im1pbG9fYmF0Y2giKSAlPiUKICBtdXRhdGUoRkRSID0gRlAvKFRQK0ZQKSkgJT4lCiAgbXV0YXRlKFRQUj1pZmVsc2UoaXMubmFuKFRQUiksIDAsIFRQUiksCiAgICAgICAgIEZQUj1pZmVsc2UoaXMubmFuKEZQUiksIDAsIEZQUiksCiAgICAgICAgIEZEUj1pZmVsc2UoaXMubmFuKEZEUiksIDAsIEZEUiksCiAgICAgICAgIFByZWNpc2lvbj1pZmVsc2UoaXMubmFuKFByZWNpc2lvbiksIDAsIFByZWNpc2lvbikpICU+JQogIG11dGF0ZShwb3A9c3RyX3JlcGxhY2UocG9wLCAiXyIsICIgIikpICU+JQogIG11dGF0ZShwb3Bfc2l6ZT1wb3Bfc2l6ZXNbcG9wXSkgICU+JQogIGFycmFuZ2UocG9wX3NpemUpICU+JQogIG11dGF0ZShwb3A9ZmFjdG9yKHBvcCwgbGV2ZWxzPXVuaXF1ZShwb3ApKSkgJT4lCiAgZmlsdGVyKERBX3RocmVzaCA+PSAwLjYgJiBiYXRjaEVmZmVjdD09MCkgCgpwbF9yaWdodCA8LSBwbF9kZiAlPiUKICBnZ3Bsb3QoYWVzKG1ldGhvZCwgVFBSLCBjb2xvcj1tZXRob2QpKSArCiAgZ2VvbV9ib3hwbG90KCkgKwogIGdnYmVlc3dhcm06Omdlb21fcXVhc2lyYW5kb20oYWxwaGE9MC41KSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC44LCBsaW5ldHlwZT0yKSArCiAgdGhlbWVfYncoYmFzZV9zaXplID0gMTYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZT0iRGFyazIiKSArCiAgZmFjZXRfZ3JpZChlbnJ+LiwgbGFiZWxsZXIgPSAnbGFiZWxfYm90aCcpICsKcGxfZGYgJT4lCiAgZ2dwbG90KGFlcyhtZXRob2QsIEZEUiwgY29sb3I9bWV0aG9kKSkgKyAKICBnZW9tX2JveHBsb3QoKSArCiAgZ2diZWVzd2FybTo6Z2VvbV9xdWFzaXJhbmRvbShhbHBoYT0wLjUpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjEsIGxpbmV0eXBlPTIpICsKICB0aGVtZV9idyhiYXNlX3NpemUgPSAxNikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlPSJEYXJrMiIpICsKICBmYWNldF9ncmlkKGVucn4uLCBsYWJlbGxlciA9ICdsYWJlbF9ib3RoJykgKwpwbG90X2xheW91dChndWlkZXM9J2NvbGxlY3QnKSAmCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF9ibGFuaygpKQoKcGxfcmlnaHQKYGBgClBsb3QgVU1BUApgYGB7ciwgZmlnLndpZHRoPTE0LGZpZy5oZWlnaHQ9OH0KY2x1c3Rlcl9zY2UgPC0gcmVhZFJEUygifi9kYXRhL21pbG9fYmVuY2htYXJrL2NsdXN0ZXJfZGF0YV9ibS5SRFMiKQppbmRpciA8LSAifi9kYXRhL21pbG9fYmVuY2htYXJrL3N5bnRoZXRpY19kYXRhLyIKCm5hbWVzKHJlZHVjZWREaW1zKGNsdXN0ZXJfc2NlKSlbMl0gPC0gInVtYXBfYmF0Y2giCmNvbG5hbWVzKHJlZHVjZWREaW1zKGNsdXN0ZXJfc2NlKVtbMl1dKSA8LSBjKCJYMSIsICJYMiIpIApwbF90b3AgPC0gcGxvdF9vdXRjb21lX3VtYXAoY2x1c3Rlcl9zY2UsIG1ldGhvZCA9ICdtaWxvJywgcG9wPSIzIiwgZW5yID0gMC45LCBzZWVkID0gNDMsYmF0Y2hFZmZlY3QgPSAwLCB0cnVlID0gVFJVRSwgZGF0YV9pZD0iY2x1c3RlciIpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJyaWdodCIpCgpwbG90X2NsdXN0ZXIgPC0gKChwbF90b3ApIC8gKHBsX3JpZ2h0KSkgKwogIHBsb3RfbGF5b3V0KGhlaWdodHMgPSBjKDEsMikpCnBsb3RfY2x1c3RlcgpgYGAKYGBge3IsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTE0fQpmaWcgPC0gKChwbG90X2NsdXN0ZXIpICYgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJub25lIikgfAogICAocGxvdF9saW5lYXIpICYgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJub25lIikgfAogICAocGxvdF9icmFuY2gpKSArIAogIHBsb3RfbGF5b3V0KHdpZHRocz1jKDEsMSwxKSkKCmZpZyArCiAgZ2dzYXZlKHBhc3RlMChmaWdkaXIsICJzaW1EYXRhX2ZpZ3VyZS5wbmciKSwgd2lkdGg9MTQsIGhlaWdodCA9IDgpCmBgYAoKCiMjIEN5ZGFyIG9uIHNpbXBsZSB0cmFqZWN0b3J5CgpQaWNrIHJhZGl1cyBwYXJhbWV0ZXIgZm9yIGRpZmZlcmVudCBkYXRhc2V0czogRm9yIGVhY2ggaHlwZXJzcGhlcmUgY2VudHJlZCBvbiBhIGNlbGwsIHRoZSByYWRpdXMKcmVxdWlyZWQgdG8gaW5jbHVkZSBhIGNlcnRhaW4gbnVtYmVyIG9mIG5lYXJlc3QgbmVpZ2hib3VycyBpcyBjb21wdXRlZC4KCmBgYHtyfQpzYW1wbGVfY29sID0gInN5bnRoX3NhbXBsZXMiCmQ9MzAKc2NlIDwtIHJlYWRSRFMoIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay9jbHVzdGVyX2RhdGFfYm0uUkRTIikKc2FtcGxlX2xzIDwtIHNwbGl0KDE6bmNvbChzY2UpLCBzY2VbW3NhbXBsZV9jb2xdXSkKcHJvY2Vzc2VkLmV4cHJzIDwtIGxhcHBseShzYW1wbGVfbHMsIGZ1bmN0aW9uKHMpIHJlZHVjZWREaW0oc2NlWyxzXSwgInBjYS5jb3JyZWN0ZWQiKVssMTpkXSkKY2QgPC0gcHJlcGFyZUNlbGxEYXRhKHByb2Nlc3NlZC5leHBycykKYm94cGxvdChuZWlnaGJvckRpc3RhbmNlcyhjZCwgbmVpZ2hib3JzPTUwLCBhcy50b2w9VFJVRSkpCmBgYAoKYGBge3J9CnNhbXBsZV9jb2wgPSAic3ludGhfc2FtcGxlcyIKZD0zMApzY2UgPC0gcmVhZFJEUygiL25mcy90ZWFtMjA1L2VkNi9kYXRhL21pbG9fYmVuY2htYXJrL2JyYW5jaGluZ19kYXRhX2JtLlJEUyIpCnNhbXBsZV9scyA8LSBzcGxpdCgxOm5jb2woc2NlKSwgc2NlW1tzYW1wbGVfY29sXV0pCnByb2Nlc3NlZC5leHBycyA8LSBsYXBwbHkoc2FtcGxlX2xzLCBmdW5jdGlvbihzKSByZWR1Y2VkRGltKHNjZVssc10sICJwY2EuY29ycmVjdGVkIilbLDE6ZF0pCmNkIDwtIHByZXBhcmVDZWxsRGF0YShwcm9jZXNzZWQuZXhwcnMpCmJveHBsb3QobmVpZ2hib3JEaXN0YW5jZXMoY2QsIG5laWdoYm9ycz01MCwgYXMudG9sPVRSVUUpKQpgYGAKCmBgYHtyfQpzYW1wbGVfY29sID0gInN5bnRoX3NhbXBsZXMiCmQ9MzAKc2NlIDwtIHJlYWRSRFMoIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay9saW5lYXJfZGF0YV9ibS5SRFMiKQpzYW1wbGVfbHMgPC0gc3BsaXQoMTpuY29sKHNjZSksIHNjZVtbc2FtcGxlX2NvbF1dKQpwcm9jZXNzZWQuZXhwcnMgPC0gbGFwcGx5KHNhbXBsZV9scywgZnVuY3Rpb24ocykgcmVkdWNlZERpbShzY2VbLHNdLCAicGNhLmNvcnJlY3RlZCIpWywxOmRdKQpjZCA8LSBwcmVwYXJlQ2VsbERhdGEocHJvY2Vzc2VkLmV4cHJzKQpib3hwbG90KG5laWdoYm9yRGlzdGFuY2VzKGNkLCBuZWlnaGJvcnM9NTAsIGFzLnRvbD1UUlVFKSkKYGBgCmBgYHtyfQpzYW1wbGVfY29sID0gInN5bnRoX3NhbXBsZXMiCmQ9MzAKc2NlIDwtIGVtYnJ5b19zY2UKc2FtcGxlX2xzIDwtIHNwbGl0KDE6bmNvbChzY2UpLCBzY2VbW3NhbXBsZV9jb2xdXSkKcHJvY2Vzc2VkLmV4cHJzIDwtIGxhcHBseShzYW1wbGVfbHMsIGZ1bmN0aW9uKHMpIHJlZHVjZWREaW0oc2NlWyxzXSwgInBjYS5jb3JyZWN0ZWQiKVssMTpkXSkKY2QgPC0gcHJlcGFyZUNlbGxEYXRhKHByb2Nlc3NlZC5leHBycykKYm94cGxvdChuZWlnaGJvckRpc3RhbmNlcyhjZCwgbmVpZ2hib3JzPTUwLCBhcy50b2w9VFJVRSkpCmBgYAoKYGBge3J9CnRvbF9kYXRhc2V0IDwtIGxpc3QoY2x1c3Rlcj0wLjgsIGJyYW5jaGluZz02LCBsaW5lYXI9NiwgZW1icnlvPTEpCmBgYAoKCgpgYGB7cn0Kc2NlIDwtIHJlYWRSRFMoIi9uZnMvdGVhbTIwNS9lZDYvZGF0YS9taWxvX2JlbmNobWFyay9saW5lYXJfZGF0YV9ibS5SRFMiKQpkYXRhX2lkIDwtICJsaW5lYXIiCnBvcCA8LSAiTTEiCnBvcF9lbnIgPC0gMC45CnNlZWQgPC0gJzQzJwptbm5fY29ycmVjdCA8LSAibm8iCmJlX3NkIDwtICcwJwoKIyMgTG9hZCBjb2xkYXRhIGFuZCBQQ0EKb3V0ZGlyIDwtICcvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvc3ludGhldGljX2RhdGEvJwpvdXRwcmVmaXggPC0gc3RyX2MoImJlbmNobWFya18iLCBkYXRhX2lkLCAiX3BvcF8iLCBwb3AsICdfZW5yJywgcG9wX2VuciwgIl9zZWVkIiwgc2VlZCkKY29sZGF0YSA8LSByZWFkX2NzdihwYXN0ZTAob3V0ZGlyLCBvdXRwcmVmaXgsICIuY29sZGF0YS5jc3YiKSkgJT4lIGNvbHVtbl90b19yb3duYW1lcygpCmlmIChtbm5fY29ycmVjdD09Im5vIikgewogIFhfcGNhIDwtcmVhZF9jc3Yoc3RyX2Mob3V0ZGlyLCBvdXRwcmVmaXgsICJfYmF0Y2hFZmZlY3QiLCBiZV9zZCwgIi5wY2EuY3N2IikpICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoKSAgCn0gZWxzZSB7CiAgWF9wY2EgPC1yZWFkX2NzdihzdHJfYyhvdXRkaXIsIG91dHByZWZpeCwgIl9iYXRjaEVmZmVjdCIsIGJlX3NkLCAiLk1OTmNvcnJlY3RlZC5wY2EuY3N2IikpICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoKQp9CiMjIEFkZCByZWR1Y2VkIGRpbSArIGNvbGRhdGEgdG8gc2NlCmNvbERhdGEoc2NlKSA8LSBEYXRhRnJhbWUoY29sZGF0YSkKcmVkdWNlZERpbShzY2UsICJwY2FfYmF0Y2giKSA8LSBhcy5tYXRyaXgoWF9wY2EpCnBsb3RSZWR1Y2VkRGltKHNjZSwgIlVNQVAiLGNvbG91cl9ieT0ic3ludGhfbGFiZWxzIikKcGxvdFJlZHVjZWREaW0oc2NlLCAiVU1BUCIsY29sb3VyX2J5PSJDb25kaXRpb24xX3Byb2IiKQoKY3lkYXJfcmVzIDwtIHJ1bkRBKHNjZSwgY29sZGF0YSwgWF9wY2EsICJjeWRhciIsIG91dF90eXBlID0gImxhYmVscyIsZCA9IDMwLAogICAgICAgICAgICAgICAgICAgIHBhcmFtcz1saXN0KGN5ZGFyPWxpc3QodG9sPXRvbF9kYXRhc2V0W1tkYXRhX2lkXV0sIGRvd25zYW1wbGU9MykpKQpkZiA8LSAub3V0Y29tZV9ieV9wcm9iKGN5ZGFyX3JlcywgMC42KSAKCmRmCgpgYGAKCgpgYGB7cn0Kc2NlIDwtIGVtYnJ5b19zY2UKZGF0YV9pZCA8LSAiZW1icnlvIgpwb3AgPC0gIkVyeXRocm9pZDIiCnBvcF9lbnIgPC0gMC45CnNlZWQgPC0gJzQzJwptbm5fY29ycmVjdCA8LSAibm8iCmJlX3NkIDwtICcwJwoKIyMgTG9hZCBjb2xkYXRhIGFuZCBQQ0EKb3V0ZGlyIDwtICcvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvc3ludGhldGljX2RhdGEvJwpvdXRwcmVmaXggPC0gc3RyX2MoImJlbmNobWFya18iLCBkYXRhX2lkLCAiX3BvcF8iLCBwb3AsICdfZW5yJywgcG9wX2VuciwgIl9zZWVkIiwgc2VlZCkKY29sZGF0YSA8LSByZWFkX2NzdihwYXN0ZTAob3V0ZGlyLCBvdXRwcmVmaXgsICIuY29sZGF0YS5jc3YiKSkgJT4lIGNvbHVtbl90b19yb3duYW1lcygpCmlmIChtbm5fY29ycmVjdD09Im5vIikgewogIFhfcGNhIDwtcmVhZF9jc3Yoc3RyX2Mob3V0ZGlyLCBvdXRwcmVmaXgsICJfYmF0Y2hFZmZlY3QiLCBiZV9zZCwgIi5wY2EuY3N2IikpICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoKSAgCn0gZWxzZSB7CiAgWF9wY2EgPC1yZWFkX2NzdihzdHJfYyhvdXRkaXIsIG91dHByZWZpeCwgIl9iYXRjaEVmZmVjdCIsIGJlX3NkLCAiLk1OTmNvcnJlY3RlZC5wY2EuY3N2IikpICU+JSBjb2x1bW5fdG9fcm93bmFtZXMoKQp9CiMjIEFkZCByZWR1Y2VkIGRpbSArIGNvbGRhdGEgdG8gc2NlCmNvbERhdGEoc2NlKSA8LSBEYXRhRnJhbWUoY29sZGF0YSkKcmVkdWNlZERpbShzY2UsICJwY2FfYmF0Y2giKSA8LSBhcy5tYXRyaXgoWF9wY2EpCnBsb3RSZWR1Y2VkRGltKHNjZSwgIlVNQVAiLGNvbG91cl9ieT0ic3ludGhfbGFiZWxzIikKcGxvdFJlZHVjZWREaW0oc2NlLCAiVU1BUCIsY29sb3VyX2J5PSJDb25kaXRpb24xX3Byb2IiKQoKY3lkYXJfcmVzIDwtIHJ1bkRBKHNjZSwgY29sZGF0YSwgWF9wY2EsICJjeWRhciIsIG91dF90eXBlID0gImxhYmVscyIsZCA9IDMwLAogICAgICAgICAgICAgICAgICAgIHBhcmFtcz1saXN0KGN5ZGFyPWxpc3QodG9sPXRvbF9kYXRhc2V0W1tkYXRhX2lkXV0sIGRvd25zYW1wbGU9MykpKQpkZiA8LSAub3V0Y29tZV9ieV9wcm9iKGN5ZGFyX3JlcywgMC42KSAKCmRmCgpgYGAKCgoKYGBge3J9CnNpbS5kZXNpZ24gPC0gbW9kZWwubWF0cml4KGRlc2lnbiwgZGF0YT1kZXNpZ25fZGYpW2NvbG5hbWVzKGNkLmRnZSksXQpzaW0uZGdlIDwtIGVzdGltYXRlRGlzcChjZC5kZ2UsIHNpbS5kZXNpZ24pCnNpbS5maXQgPC0gZ2xtUUxGaXQoc2ltLmRnZSwgc2ltLmRlc2lnbikKc2ltLnJlcyA8LSBnbG1RTEZUZXN0KHNpbS5maXQsIGNvZWY9MikKCiMgY29udHJvbCB0aGUgc3BhdGlhbCBGRFIKY3lkYXIucmVzIDwtIHNpbS5yZXMkdGFibGUKY3lkYXIucmVzJFNwYXRpYWxGRFIgPC0gc3BhdGlhbEZEUihpbnRlbnNpdGllcyhjZCksIHNpbS5yZXMkdGFibGUkUFZhbHVlKQpib3hwbG90KHNpbS5kZ2UkY291bnRzKQpoaXN0KGN5ZGFyLnJlcyRQVmFsdWUpCgpjeWRhci5yZXMkU3BhdGlhbEZEUiA8IDAuMQpgYGAKCgpgYGB7cn0KY29sRGF0YShzaW1fdHJhamVjdG9yeSRTQ0UpIDwtIERhdGFGcmFtZShzaW1fdHJhamVjdG9yeSRtZXRhKQpwbG90UENBKHNpbV90cmFqZWN0b3J5JFNDRSwgY29sb3VyX2J5PSJDb25kaXRpb24iKQpwbG90UmVkdWNlZERpbShzY2UsICJwY2EuY29ycmVjdGVkIixjb2xvdXJfYnk9InN5bnRoX2xhYmVscyIpCnBsb3RSZWR1Y2VkRGltKHNjZSwgIlVNQVAiLGNvbG91cl9ieT0iQ29uZGl0aW9uMV9wcm9iIikKYGBgCgpUcnkgZG93bnNhbXBsaW5nIG9uZSBvZiB0aGUgMiBjb25kaXRpb25zCgpgYGB7cn0KQzFfY2VsbHMgPC0gY29sbmFtZXMoc2NlKVtzY2Ukc3ludGhfbGFiZWxzPT0iQ29uZGl0aW9uMSJdCkMyX2NlbGxzIDwtIGNvbG5hbWVzKHNjZSlbc2NlJHN5bnRoX2xhYmVscz09IkNvbmRpdGlvbjIiXQpzbXBfQzIgPC0gc2FtcGxlKEMyX2NlbGxzLCBzaXplID0gbGVuZ3RoKEMyX2NlbGxzKSAqIDEpCgpzY2VbLGMoQzFfY2VsbHMsIEMyX2NlbGxzKV0gCnNjZQp0YWJsZShydW5fY3lkYXIoc2NlWyxjKEMxX2NlbGxzLCBDMl9jZWxscyldLCB0b2wgPSAzLjAsIGQ9MzApJERBcmVzJFNwYXRpYWxGRFIgPCAwLjEpCmBgYApgYGB7cn0KYmVuY2htYXJrX2RmIDwtIHJlYWRfY3N2KCIvbmZzL3RlYW0yMDUvZWQ2L2RhdGEvbWlsb19iZW5jaG1hcmsvYmVuY2htYXJrX2VtYnJ5b19wb3BfRXJ5dGhyb2lkMl9lbnIwLjlfc2VlZDQzX2JhdGNoRWZmZWN0MC5EQXJlc3VsdHMuZGFzZXEuY3N2IikgCgoub3V0Y29tZV9ieV9wcm9iKGJlbmNobWFya19kZiwgMC42KQoKCi5vdXRjb21lX2J5X3Byb2IoYmVuY2htYXJrX2RmLCAwLjYpCmBgYAoKCg==